У меня есть UIImageView в UIScrollView в другом UIScrollView (на основе примера кода Apple PhotoScroller ).Когда UIScrollView обращается к своему контроллеру для отмены самого себя, он вызывает этот метод:
- (void)dismiss {
[scrollView removeFromSuperview];
ImageScrollView *isv = [self currentImageScrollView];
UIImage *image = isv.imageView;
image.frame = [self.view convertRect:image.frame fromView:isv];
[self.view insertSubview:image belowSubview:captionView];
[(NSObject *)delegate performSelector:@selector(scrollViewDidClose:)
withObject:self
afterDelay:2.0];
}
Теперь вот странная часть: представление изображения переходит на другую позицию сразу после выполнения этого метода, но до scollViewDidClose
метод вызывается на делегате.Если изображение больше, чем его новый супер-вид, оно переходит так, что его левый край выравнивается по левому краю его супер-вида.Если он меньше, чем его новый супер вид, он переходит в самый центр вида.В этом изменении нет анимации.
Итак, мой вопрос: как мне предотвратить это?Я настроил как класс super view (self.view
), так и класс view image, чтобы увидеть, какие методы могут быть вызваны.Ни кадр, ни центр не устанавливаются в представлении изображения после вызова этого метода, и в то время как метод layoutSubviews
вызывается в суперпросмотре, то есть , а не , что перебрасывает изображение в центр или влевосторона суперпредставления.Я также попытался отключить autoResizesSubviews
в режиме суперпредставления и установить autoresizingMask
вида изображения на UIViewAutoresizingNone
без изменений в поведении.
Так, где это происходит и почему?И что еще более важно, как я могу остановить это?
Я бился над этим в течение нескольких дней.Любые указатели или указания будут с благодарностью.