如何将UIButton / UILabel等修复到不同方向的某些位置?

时间:2011-09-19 13:42:31

标签: iphone objective-c uiview

如何将UIButton / UILabel等修复到不同方向的某些位置?谢谢!!! 当我为不同的方向设置不同的框架时会发生奇怪的事情吗?有解决方案吗?

3 个答案:

答案 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有一个很好的,简单的介绍。