【发布时间】:2021-01-14 10:46:20
【问题描述】:
我在 xib 上有一个 UIView,当我在 viewDidLoad 上检查它的框架时,它说:
- some : <UIView: 0x7fcc3948b8a0; frame = (56.3333 122; 262.333 262.333); clipsToBounds = YES; autoresize = RM+BM; layer = <CALayer: 0x600003a62060>>
在调用layoutIfNeeded()之后,就在上一个日志之后,它说:
- some : <UIView: 0x7fcc3948b8a0; frame = (56.5 121.917; 262 262.5); clipsToBounds = YES; autoresize = RM+BM; layer = <CALayer: 0x600003a62060>>
并且,在viewDidLayoutSubviews(),框架是:
- some : <UIView: 0x7fcc3948b8a0; frame = (62 122; 290 289.5); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x600003477420>; layer = <CALayer: 0x600003a62060>>
为什么这对我很重要?因为我在该视图内设置了一个UIScrollView,并在UIScrollView 内设置了一个带有缩放功能的UIImage,这使得图像正确的缩放框架被打破。
我该如何解决这个问题?
【问题讨论】:
-
您需要更详细地了解自己在做什么。您“在 xib 上有一个 UIView” ...显示您如何约束该视图以及如何加载并将其添加为子视图。 "on viewDidLoad" ...您的意思是在控制器中添加了来自 xib 的视图吗?还是您的 xib 是视图控制器?您如何尝试“在该视图内设置 UIScrollView 并在 UIScrollView 内设置缩放的 UIImage”?
-
在我的 UIViewController 中,我添加了一个 UIView (1),它有一个顶部、对齐中心 x、等宽(到 superview)和比率 1:1 的约束。他有一个 UIScrollView 作为子视图,它有一个顶部、底部、前导和尾随约束。这个 UIScrollView 有一个 UIView 设置为子视图,他有顶部、底部、前导、尾随和相等的宽度、高度(到 UIView num.1)约束。在这个 UIView 里面我有一个没有任何约束的 UIImage 。啤酒花这个可以理解。哈哈
-
为什么不给 UIImageView 添加约束?
-
因为图像是由我从 WS 获得的数据缩放的,并且在向它添加约束时,它会阻止它被缩放。 UIScrollViewDelegate 有一个名为“viewForZooming”的方法,我返回图像并缩放图像。
标签: ios swift uiscrollview uiimage constraints