gpt4 book ai didi

objective-c - 为什么这个 UIImageView 自动居中?

转载 作者:行者123 更新时间:2023-11-29 11:23:29 27 4
gpt4 key购买 nike

我在另一个 UIScrollView 中的 UIScrollView 中有一个 UIImageView(基于 Apple 的 PhotoScroller sample code ).当 UIScrollView 回调它的 Controller 以关闭它自己时,它调用这个方法:

- (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];
}

现在这是奇怪的部分: ImageView 在该方法执行后立即跳转到另一个位置,但在对委托(delegate)调用 scollViewDidClose 方法之前。如果图像大于它的新 super View ,它会跳转,使其左边缘与其 super View 的左边缘对齐。如果它比新的 super View 小,它会跳到 View 的正中心。此更改没有动画。

所以我的问题是,如何防止它这样做?我调整了 super View (self.view) 类和 ImageView 类以查看可以调用哪些方法。调用此方法后imageview上既没有设置frame也没有设置center,而在superview上调用了layoutSubviews方法,也就是不是跳转图像到父 View 的中心或左侧。我还尝试在 super View 中关闭 autoResizesSubviews,并将 ImageView 的 autoresizingMask 设置为 UIViewAutoresizingNone,但行为没有变化.

那么这是在哪里发生的,为什么?更重要的是,如何让它停止?

这几天我一直在苦思冥想。任何指示或指导将不胜感激。

最佳答案

ImageScrollView 是一个以您的 UIImageView 为中心的 View 。在 ImageScrollView layoutSubviews 中设置一个断点,您将看到您的 UIImageView 是如何居中的。

您正在使用 ImageScrollView 的内部 imageView 并将其放入另一个 View 中。这是行不通的,因为 ImageScrollView 仍然保留该 UIImageView 实例的所有权,并且仍在管理其布局。

您需要将图像复制到另一个 UIImageView 实例中,或者您需要更改 ImageScrollView 以允许它放弃其 的所有权imageView.

关于objective-c - 为什么这个 UIImageView 自动居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5288104/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com