【发布时间】:2012-06-23 16:02:56
【问题描述】:
我正在开发一款 iPad 应用程序,该应用程序可让您控制智能房屋原型中的不同事物。例如,它可以让您打开和关闭灯。为此,我制作了一个 UIImageView 来显示房子的平面图,并添加了 UIButtons 作为每个可以切换的灯的子视图。
如您所见,使用每个UIButton 的setFrame 方法将按钮完美地放置在平面图上。但是,当我将 iPad 旋转到纵向时,会发生以下情况:
按钮显然仍然具有相同的原点,但它与图像的重新定位无关。
平面图图像具有以下支柱和弹簧设置:
并将其内容模式设置为Aspect Fit。
我的问题是
如何动态重新定位每个UIButton,使其具有相同的相对位置。我想我必须在 {did/should}AutorotateToInterfaceOrientation 委托方法中处理这个问题。
应该注意UIImageView 是可缩放的,为了解决这个问题,我实现了scrollViewDidZoom 委托方法,如下所示:
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);
}
提前谢谢你!
【问题讨论】:
-
您是否尝试取消勾选该视图的自动调整大小子视图?
-
很好的问题,完美的解释和说明。
-
@LuisOscar 是的,不幸的是,我尝试过这样做但没有成功。
标签: objective-c xcode ipad ios5