使用故事板时,需要以编程方式调整子视图的大小是什么?

时间:2014-02-25 17:00:08

标签: ios iphone objective-c ios7 autolayout

我精通自定义视图。今天我开始使用故事板&我无法说服自己使用故事板。

问题:   - 我在故事板中由View Controller设置。   - 在4英寸的模拟器上运行,我很高兴使用视图的布局。   - 在3.5英寸的模拟器上运行,我很沮丧,因为我的视图部分可见。

以下是截图。

  • 我的SotryBaord(查看“删除用户”按钮)。

    enter image description here

  • 删除用户按钮框:

    enter image description here

  • 在4英寸模拟器上运行

    enter image description here

  • 在4英寸模拟器上运行(我有问题)

    enter image description here

如何使用布局调整框架,以便在两个尺寸的iPhone中都能清晰显示。我的删除用户按钮不应该离开屏幕。

2 个答案:

答案 0 :(得分:2)

配合,自动布局有点复杂,你需要掌握它,同时花费大量时间,但如果你想在几分钟内完成它,只需取消选中自动布局,选择每个UI元素并设置其自动调整大小如这个enter image description here

您可以更改自动布局,只需点按此按钮即可查看更改enter image description here

希望这会有所帮助并节省时间。

答案 1 :(得分:1)

非常好的问题。当我升级它们以支持iphone 5屏幕尺寸时,我遇到了与我的每个应用程序完全相同的问题。

我最终做的是禁用自动布局,但我仍然使用故事板放置我的所有按钮,视图,图像等。我确保在放置所有项目时我在故事板中使用3.5in。然后我将那些UILabel或UIButton等连接到IBoutLet,然后在我的ViewDidLoad中,我检查它的iphone 4是否与iPhone 5相关,并相应地重新定位所有按钮。

例如。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            if(result.height == 480)
            {
                // iPhone Classic

            }
            if(result.height == 568)
            {
                // iPhone 5 this is the offset I am using
                int yInt = 50;

                [blurSlider setFrame:CGRectMake(31, 406+yInt, 271, 34)];
                [alphaSlider setFrame:CGRectMake(31, 447+yInt, 271, 34)];

                [blurLabel setFrame:CGRectMake(33, 392+yInt, 71, 24)];
                [alphaLabel setFrame:CGRectMake(33, 436+yInt, 71, 24)];
            }
        }
}

我可以在没有使用故事板的情况下完成所有编码吗?我当然可以,但我发现故事板的视觉方面很吸引人,并且能够准确地看到屏幕上的所有内容。