我在界面生成器中有一个 XIB,它处于纵向模式,上面有 5 个 UILabel,它们在视图中均匀分布。当 iPhone 向右或向左旋转时,我希望标签在视图中均匀分布,以充分利用额外的屏幕宽度。
使用 Interface Builder 的 Size&Position 位,我可以很容易地用一个控件做到这一点,但我如何设置其他控件来做到这一点?
这是您必须以编程方式执行的操作吗?
谢谢
麦克风
我在界面生成器中有一个 XIB,它处于纵向模式,上面有 5 个 UILabel,它们在视图中均匀分布。当 iPhone 向右或向左旋转时,我希望标签在视图中均匀分布,以充分利用额外的屏幕宽度。
使用 Interface Builder 的 Size&Position 位,我可以很容易地用一个控件做到这一点,但我如何设置其他控件来做到这一点?
这是您必须以编程方式执行的操作吗?
谢谢
麦克风
这取决于控件在 xib 周围的位置,在大多数情况下,您应该能够避免使用界面生成器中“自动调整大小”下显示的属性进行编码。基本上你在这里所做的一切都可以用代码来完成
view.autoresizingMask = UIViewAutoresizing<and the various masks here>
不要忘记以一种告诉视图重新定位元素的方式实现 viewDidLoad 方法
-(void)viewDidLoad{
self.view.autoresizesSubviews = YES;
[super viewDidLoad];
}
另外,有用的一点是,在 ipad 上,在导航控制器中嵌入视图控制器使 ipad 可以处理大部分旋转和调整大小问题。
您可以尝试通过设置UIView具有的 autoresizingMask 属性来实现。这将是最简单的方法,如果你能让它做你想做的事。您可以在创建或初始化视图的任何位置进行设置:
view.autoresizingMask = UIViewAutoresizingFlexibleRightMargin;
您可能无法通过这种方式获得所有 5 个标签的准确定位;但是您绝对应该至少可以将它用于其中一些。剩下的,你想实现UIViewController的willRotateToInterfaceOrientation:duration:
方法。每当 iPad 旋转时都会调用此方法,您可以在该方法中设置标签的位置。