【发布时间】:2011-03-13 07:32:18
【问题描述】:
我在另一个 UIScrollView 的 UIScrollView 中有一个 UIImageView(基于 Apple 的 PhotoScroller sample code)。当 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 方法被委托调用之前。如果图像大于其新的超级视图,它会跳转,使其左边缘与其超级视图的左边缘对齐。如果它比它的新超级视图小,它会跳到视图的中心。此更改没有动画。
所以我的问题是,我该如何防止它这样做?我已经调整了超级视图 (self.view) 类和图像视图类,以查看可以调用哪些方法。调用此方法后,图像视图上既没有设置边框也没有设置中心,而在超级视图上调用了layoutSubviews 方法,即不是将图像跳转到中心或超级视图的左侧。我还尝试在超级视图中关闭autoResizesSubviews,并将图像视图的autoresizingMask 设置为UIViewAutoresizingNone,而行为没有变化。
那么这发生在哪里,为什么?更重要的是,如何让它停止?
这几天我一直在苦苦思索。任何指针或指导将不胜感激。
【问题讨论】:
-
您没有发布正确的代码。 UIScrollView 没有 imageView 属性,UIImage 没有 frame 属性。
-
Darren — 我正在使用基于 Apple 的 PhotoScroller example code 的 UIScrollView 的子类,它有一个
imageViewivar,我只是为其添加了一个访问器。 -
我已将类更改为
ImageScrollView,它是具有imageView属性的子类。感谢现场。
标签: objective-c cocoa-touch ios uiscrollview uiimageview