Rotation by a given distance in given direction on a Bloch sphere I'm using the following matrix to rotate a states by a distance given by $\theta$ in a direction given by $\phi$:
$$
U = \left(\begin{array}{cc}  \cos{\theta\over{2}} & -e^{- i\phi}\sin{\theta\over{2}} \\ e^{i\phi}\sin{\theta\over{2}} &  \cos{\theta\over{2}} \end{array}\right)
$$
It works well only in the case, when my initial state is a state $|0\rangle$ or $|1\rangle$. E.g. when I get new state by:
$$|\psi\rangle = U_{\theta,\phi}|0\rangle$$
distance between $|0\rangle$ and $|\psi\rangle$ is equal $\theta$ but when I do it for any other state, e.g. $|+\rangle$ - distance between two states after that operation isn't always equal to $\theta$ and depends on $\phi$ parameter.
Am I doing something wrong or it's normal and expected result? If so, is there any matrix which will allow me to get the results that I expect? 
 A: 
when I do it for any other state, e.g. $|+\rangle$ - distance between two states after that operation isn't always equal to $\theta$ and depends on $\phi$ parameter.

That's the expected behaviour. Every rotation of the Bloch sphere has stationary points (or, in Hilbert-space language, every unitary has a basis of eigenvectors), otherwise known as the rotation axis, which means that the Bloch-sphere distance between $|\psi⟩$ and $U|\psi⟩$ can always be zero. Thus, the Bloch-sphere angle between $|\psi⟩$ and its image under a rotation by angle $\theta$ can be any number between zero and $\theta$, depending on where $|\psi⟩$ is with respect to the axis of the rotation.
If what you want is a transformation from the Bloch sphere into itself such that every point ends up at a fixed distance from itself, then no, I don't think this is possible - but, more importantly, it does not represent a rotation in the Bloch sphere nor a unitary on Hilbert space, so even if it exists it is not particularly useful.
