在UIView中更改UIButton框架

时间:2014-12-15 17:39:58

标签: ios objective-c uiview uibutton frame

我想在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类上尝试在viewFormatting内调用相同的方法initWithFrame:时,按钮/标签框架不会调整大小。我也尝试在layoutSubviews内调用函数。我在NSLog内放了一个viewFormatting,所以我知道它被正确调用,但按钮/标签框架没有改变。

注意:在这两种情况下,我都在XIB文件中创建了出口。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

更新:感谢@nburk我意识到在我的xib文件上检查了使用AutoLayout。删除后,上面的代码完美无缺。

我会把它留给任何需要样品的人。

答案 1 :(得分:0)

添加此方法:      - (void)viewDidLayoutSubviews {     [super viewDidLayoutSubviews];     [self viewFormatting];     }

viewDidLayoutSubviews会自动调用。