【发布时间】:2014-12-15 17:39:58
【问题描述】:
我想在 iPhone 4/4s 屏幕上显示不同的 UIButton/UILabel/UISlider 尺寸。在父 ViewController viewDidAppear: 方法中,我可以通过调用 viewFormatting 函数来设置新的按钮框架。
- (void) viewFormatting
{
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
CGSize result = [[UIScreen mainScreen] bounds].size;
//iPhone 4
if (result.height == 480)
{
self.myButton.frame = CGRectMake(x, y, width, height);
self.myLabel.frame = CGRectMake(x, y, width, height);
//etc.
}
}
}
但是当我尝试在单独的 UIView 类上的 initWithFrame: 内调用相同的方法 viewFormatting 时,按钮/标签框架不会调整大小。我还尝试在layoutSubviews 中调用该函数。我在viewFormatting 中放了一个NSLog,所以我知道它被正确调用了,但是按钮/标签框架没有改变。
注意:在这两种情况下,我都在 XIB 文件中创建了出口。
非常感谢任何帮助!
【问题讨论】:
-
写在ViewDidLayoutSubview中
-
你在使用 AutoLayout 吗?
-
不使用AutoLayout,需要调用viewDidLayoutSubview吗?还是像 viewDidAppear 一样自动调用?
-
@nburk 啊,我使用的是 AutoLayout。我没有选中它,它工作正常。没有意识到单个 xib 可以单独使用自动布局。谢谢!
标签: ios objective-c uiview uibutton frame