2012-03-03 3 views
6

Может быть, я не понимаю. Когда яUIView, повернутый на 45 °, исчезает?

self.tweetPeak.transform = CGAffineTransformMakeRotation(RADIANS(45)); 

где радиан

#define RADIANS(degrees) ((degrees * M_PI)/180.0) 

на простой UIView объект исчезнет.

Я думаю, это просто тонкий, чтобы видеть. Мое впечатление, что вид становится меньше в диапазоне от 20 до 45 градусов.

Что это? Я попытался сделать представление непрозрачным. Нет эффекта.

Крисом

+0

Возможно ли, что он повернут из экрана? –

+0

Не связанные, но 'RADIONS' - это ужасное имя для этого определения. Он не дает указания на то, что он делает или как его использовать. –

+0

@ Paul.s, это вопрос стиля, IMO, это прекрасное имя для макроса, но я видел его как «TO_RADIANS», «DEGREES_TO_RADIANS» и так далее. Это действительно зависит от того, что вам нужно. –

ответ

9

Вы должны прекратить настройки кадра после поворота, он вызывает нежелательное растягивание к преобразованию матрицы, я не уверен в формальной причине, почему, но у него есть что-то делать с Apple, используя свои собственные матричной системы, а не традиционных матриц, чтобы представлять 2D/3D переводы/вращения/масштаб. У меня была такая же проблема на днях, чтобы исправить ее, вместо того, чтобы вращать этот вид, я просто сделал контейнер контейнера с фактическим видом, который я хотел повернуть внутри, и повернул его.

+3

CGAffineTransform и CATransform3D являются абсолютно стандартными традиционными матрицами. Apple не делает ничего странного там. Ваша проблема в том, что '- [CALayer frame]' - значение _derived_ - оно основано на свойствах 'position',' bounds', 'anchorPoint' и' transform'. Если вы измените преобразование, кадр изменится. Если вы затем попытаетесь изменить фрейм, слой попытается отрегулировать положение и bounds.size, чтобы заставить его работать. Решение: не устанавливайте рамку. –

+0

Если CATransform3D является традиционной матрицей, почему я не могу настроить, скажем, традиционную ортогональную матрицу и все еще вижу свой слой? Или перспектива в этом? Я имею в виду, что я не сомневаюсь в вас, но они не используют его традиционно, почему .m34 управляет чем-то, что сродни FOV? Ничто из этого не является стандартным, если вы спросите меня. Но я могу ошибаться. –

+0

Я искал довольно много, пытаясь понять это. Ваши два комментария действительно помогли мне понять мою проблему. Для всех, кто работает в этом ... У меня была инициализация, где мне хотелось, чтобы некоторые метки вращаются. У меня было это в viewDidLoad ... Мне пришлось переместить его в viewDidAppear, чтобы заставить все работать правильно (поскольку кадр все еще устанавливается до просмотра viewWillAppear). –