Zap*_*pel 5 xcode objective-c ipad ios5
我正在开发一款iPad应用程序,可让您在智能房屋的原型中控制不同的东西.例如,它可以让你打开和关闭灯.为此,我做了一个UIImageView显示房子的平面图,并添加UIButtons为每个可以切换的灯的子视图.

如您所见,按钮完全放置在平面图上,使用setFrame每个按钮的方法UIButton.但是,当我将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);
}
Run Code Online (Sandbox Code Playgroud)
先感谢您!
我发现布局子视图的最佳方法是在- (void) layoutSubviews方法中。您必须对 UIImageView 进行子类化并重写该方法。
每当框架发生变化时,都会自动调用此方法,并且在第一次呈现视图时也会调用此方法。
如果将所有布局代码放入此方法中,它可以防止布局碎片和重复,将视图代码保留在视图中,并且大多数事情默认情况下都可以工作。