如何将UIButton / UILabel等修复到不同方向的某些位置?谢谢!!! 当我为不同的方向设置不同的框架时会发生奇怪的事情吗?有解决方案吗?
答案 0 :(得分:1)
创建2个视图会更好。一个用于肖像,一个用于景观。
然后您可以以适当的格式相应地设置所有数据。
然后根据设备方向更换View。
if((interfaceOrientation == UIInterfaceOrientationPortrait) || (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown))
{
[myLandscapeView removeFromSuperview];
[myPortraitView setFrame:CGRectMake(0, 0, 320, 480)];
[self.view addSubview:myPortraitView];
[self.view bringSubviewToFront:myPortraitView];
}
if((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight))
{
[myPortraitView removeFromSuperview];
[myLandscapeView setFrame:CGRectMake(0, 0, 480, 320)];
[self.view addSubview:myLandscapeView];
[self.view bringSubviewToFront:myLandscapeView];
}
我希望它会对你有所帮助。
干杯。
答案 1 :(得分:0)
是的!你需要layoutSubviews。只要方向发生变化,或者在视图出现之前,它就会被调用。
使用此方法根据视图的边界布局子视图。例如:
- (void)layoutSubviews {
CGRect bounds = self.bounds;
do your layout stuff here
}
布局是一个相当复杂的主题,你会发现大量的例子,教程。我通常亲自接近它的方式是考虑每个元素如何为不同的方向定位。宽度或高度是否需要改变?是否应该相对于屏幕的顶部或左侧固定某些内容?另一个组件应该相对于组件移动还是固定?
答案 2 :(得分:0)
只有在视图非常复杂的情况下才能制作两个视图,例如iPhone计算器,它会在旋转时完全改变。例如,如果您只想重新定位按钮或在角落保持开关,则需要使用自动调整系统。该系统有时被称为“支柱和弹簧”。在Techotopia有一个很好的,简单的介绍。