У меня есть UIView, который я хочу автоматически увеличить, чтобы быть размером экрана, когда пользователь нажимает на него.Почему мое изображение поворачивается на 90 градусов до его масштабирования?
Я взял код из http://cocoawithlove.com/2010/09/zoomingviewcontroller-to-animate-uiview.html
и зумирование работает, за исключением непосредственно перед началом масштабирования вида поворачивается на 90 градусов. Почему это происходит?
(мнение находится в карусели. Перед пользователю постукивания вида, устройство вращаются в ландшафт, в этот момент контроллера представления для карусели в стек навигации и отображаемой карусель.)
код:
- (void)buttonTapped:(UIButton *) sender
{
NSInteger index = [self.carousel indexOfItemView:sender];
UIView *currentView = [self.carousel itemViewAtIndex: index];
UIView *proxyView = [[UIView alloc] initWithFrame:currentView.frame];
proxyView.hidden = YES;
proxyView.autoresizingMask = currentView.autoresizingMask;
[currentView.superview addSubview: proxyView];
CGRect frame = [currentView.window convertRect:currentView.frame fromView:proxyView.superview];
[currentView.window addSubview:currentView];
currentView.frame = frame;
[UIView
animateWithDuration:2.4
animations:^{
currentView.frame = currentView.window.bounds;
}];
(карусельного является UIView, производный объект, от https://github.com/nicklockwood/iCarousel)
Благодаря
Если я прокомментирую первую строку, вид переместится в нижний левый угол (он был в центре), а затем вращается. Если я прокомментирую вторую строчку, она останется центрированной, но по-прежнему вращается (но не масштабируется, конечно). – Gruntcakes
@ ChrisP.Bacon Решение, как объясняется в документах, заключается в том, чтобы анимировать 'bounds' и' center' вместо 'frame', если есть не-идентичное преобразование. – Caleb
Вращение происходит перед анимией, поэтому, если я полностью закомментирую код анимации, поворот все еще происходит. – Gruntcakes