У меня есть UIView, высота и ширина которого при повороте до 90 градусов взаимозаменяемы. Теперь, когда я пытаюсь увеличить высоту или ширину, я получаю ненормальные взгляды. Как изменить высоту вращения UIView?Поверните UIView без изменения рамки
ответ
В документации Apple указано, что свойство представлений frame
не определено, если transform
не является преобразованием идентичности.
Вращающийся вид изменяет преобразование вида.
Теперь, почему это делает недействительным рамку? Документация Apple на самом деле немного неточна: свойство frame не становится совершенно бессмысленным для преобразованных представлений. Вместо этого теперь он будет отображать ограничивающий прямоугольник вида, т. Е. Наименьший вертикальный прямоугольник, в который может вписаться преобразованное представление.
Это потому, что frame
на самом деле является производным имуществом. Если вы хотите изменить «реальную высоту» преобразованного вида, то есть высоту в своей собственной системе координат (до применения преобразования), для этого есть свойство: bounds
.
Итак, в двух словах:
CGRect bounds = myView.bounds;
bounds.size.height = newHeight;
myView.bounds = bounds;
Итак, если я введу эти строки в свой код, где я должен добавить CGAffineTransformMakeRotation часть? После или раньше? –
Чувак, ты сделал мой день. Черт возьми, приятель. –
Спасибо; Рад, что смог помочь! Для записи (я уверен, вы уже поняли это сами): если вы меняете границы, неважно, изменяете ли вы трансформацию до или после. Если вы меняете фрейм, обязательно сделайте это только в том случае, если 'CGAffineTransformIsIdentity (myView.transform)' ДА (то есть перед изменением преобразования). Отправляйте это сообщение в блоге (не я) для получения дополнительной информации о фреймах и ограничениях: http://ashfurrow.com/blog/you-probably-dont-understand-frames-and-bounds – fzwo
Используйте следующий метод ...
- (void) runSpinAnimationOnView:(UIView*)view duration:(CGFloat)duration rotations:(CGFloat)rotations repeat:(float)repeat;
{
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * rotations * duration ];
rotationAnimation.duration = duration;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = repeat;
[view.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}
- 1. Размер рамки для изменения рамки
- 2. Поверните UIView в UIImage
- 3. Поверните UIView на шарнире
- 4. Поверните UIView с CGAffineTransformMakeRotation
- 5. Поверните UIView в Cocoa Touch
- 6. Лучший способ анимации изменения рамки в подвижущем UITableViewCell БЕЗ перезагрузки
- 7. UIViewContentModeScaleAspectFill расширяет рамки UIView
- 8. UIView рамки и границы
- 9. изменить цвет текста без изменения цвета рамки
- 10. Ограничение определенного UIView для изменения рамки при вращении интерфейса
- 11. UIView animateWithDuration, не меняя рамки UIView
- 12. Поверните ось датчика андроида относительно рамки автомобиля
- 13. Масштабировать изображение внутри UIView без изменения границ?
- 14. Поверните UIView, который уже оживляет w/rotation
- 15. Поверните UIView и сохраните пропорции после вращения
- 16. Поверните UIView вокруг правой стороны экрана
- 17. Поверните структуру списка в аккордеон без изменения HTML
- 18. Границы и размер рамки UIView
- 19. Инициализация рамки UIView с CGRectZero
- 20. Изменение рамки UIView и update cornerRadius
- 21. WxPython, стиль рамки изменения
- 22. Общий способ обнаружения касания вне рамки UIView
- 23. iPhone - изменения ориентации UIView
- 24. Анимированная цвет изменения UIView
- 25. UIView изменения ориентации программно
- 26. Изменения UIViewController к UIView
- 27. Вложенные изменения UIView
- 28. Изменение данных базы данных динамически без изменения рамки в swing
- 29. Изменение цвета кнопки Android при щелчке без изменения цвета рамки?
- 30. Изменение рамки от pure.css до начальной загрузки, без изменения разметки
Я просто нужен способ изменить угол, как он появляется на экране. –
'view.transform = CGAffineTransformMakeRotation (M_PI/2);' –
Пример 90 градусов. Я поворачиваю представление вручную. Когда я это делаю, меняются высота и ширина. Мне нужно просто изменить угол обзора на экране. –