我正在开发一款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);
}
提前谢谢你!
发布于 2012-06-25 03:55:42
我发现布局子视图的最好方法是在- (void) layoutSubviews
方法中。您必须将UIImageView子类化并覆盖该方法。
这个方法会在你的框架改变时自动调用,也会在你的视图第一次出现时调用。
如果你把你所有的布局代码放在这个方法中,它可以防止布局碎片和重复,让你的视图代码保持在你的视图中,而且大多数东西在默认情况下都能正常工作。
https://stackoverflow.com/questions/11170976
复制