gpt4 book ai didi

objective-c - 旋转时如何动态地将 UIButton 重新定位为 UIImageView 的 subview

转载 作者:太空狗 更新时间:2023-10-30 03:54:53 25 4
gpt4 key购买 nike

我正在开发一款 iPad 应用程序,它可以让您控制智能房屋原型(prototype)中的不同事物。例如,它可以让您打开和关闭灯。为此,我制作了一个显示房屋平面图的 UIImageView 并添加了 UIButtons 作为每个可以切换的灯的 subview 。

enter image description here

如您所见,使用每个 UIButtonsetFrame 方法,按钮完美地放置在平面图上。但是,当我将 iPad 旋转到纵向时,会发生以下情况:

enter image description here

按钮显然仍然具有相同的原点,但是它与图像的重新定位无关。

平面图图像具有以下支柱和 Spring 设置:

enter image description here

并将其内容模式设置为 Aspect Fit

我的问题是

如何动态重新定位每个 UIButton,使其具有相同的相对位置。我想我必须在 {did/should}AutorotateToInterfaceOrientation 委托(delegate)方法中处理这个问题。

应该注意 UIImageView 是可缩放的,为了处理这个问题,我实现了 scrollViewDidZoom 委托(delegate)方法,如下所示:

for (UIView *button in _floorPlanImage.subviews) {       
CGRect oldFrame = button.frame;
[button.layer setAnchorPoint:CGPointMake(0.5, 1)];
button.frame = oldFrame;
button.transform = CGAffineTransformMakeScale(1.0/scrollView.zoomScale, 1.0/scrollView.zoomScale);
}

提前致谢!

最佳答案

我发现布局 subview 的最佳方式是在 - (void) layoutSubviews 方法中。您将不得不子类化您的 UIImageView 并覆盖该方法。

此方法将在您的框架发生变化时自动调用,并且在您的 View 首次呈现时也会被调用。

如果您将所有布局代码放在这个方法中,它可以防止布局碎片化和重复,将您的 View 代码保留在您的 View 中,并且大多数事情都默认工作。

关于objective-c - 旋转时如何动态地将 UIButton 重新定位为 UIImageView 的 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11170976/

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