Уилабель исчезает при наложении на него вращения
Что у меня есть
UIView
1.Image1
2.Image2
3.UILabel
как изображение ниже
Затем я применяю ротацию к UILabel, выполняя
- (void)viewDidLoad
{
testLabel.transform = CGAffineTransformMakeRotation(M_PI*0.25);
[super viewDidLoad];
}
и когда я запускаю приложение, uilabe исчезает в конце концов. Посмотрите на второе изображение для справки
Пожалуйста, укажите, что я делаю не так здесь... и как сделать работу
Спасибо
4 ответа
Остерегайтесь, потому что Autolayout вызывает много проблем.
Попробуйте отменить выбор "Использовать Autolayout"
Это решает мне все проблемы, пытаясь перевести объекты.
Попробуйте умножить на PI меньшее значение против PI, чтобы увидеть, вращается он или просто исчезает. Если я правильно помню, повороты основаны не на центре, а на верхнем левом углу, поэтому вам придется переводить потом!
Например, чтобы повернуть видеоклип, мне нужно было сделать следующее:
CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI);
CGAffineTransform translateToCenter = CGAffineTransformMakeTranslation(640, 480);
CGAffineTransform mixedTransform = CGAffineTransformConcat(rotation, translateToCenter);
[firstTrackInstruction setTransform:mixedTransform atTime:kCMTimeZero];
Сначала я повернул PI (180 градусов), но поскольку центр вращения - это верхний левый угол, мой видеоклип теперь находился в противоположном квадранте, и его нужно было преобразовать обратно! Это может быть то, что происходит с вашим лейблом.
Попробуйте это, предполагая, что размер вашего ярлыка 42х21.
CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI);
CGAffineTransform translateToCenter = CGAffineTransformMakeTranslation(42, 21);
CGAffineTransform mixedTransform = CGAffineTransformConcat(rotation, translateToCenter);
label.transform = mixedTransform;
Попробуйте сначала поставить [super viewDidLoad]:
- (void)viewDidLoad
{
[super viewDidLoad];
testLabel.transform = CGAffineTransformMakeRotation(M_PI*0.25);
}
AutoLayout и AutoResizing часто вызывают трудности при применении преобразований, так как они, похоже, изменяют рамку, а не границы и центр вида. Отсюда автоматические настройки разрушают ваш макет. Попробуйте обернуть преобразованную метку в представление, которое не изменяет размеры и компоновку этого представления в своем суперпредставлении, как вы хотите.