0

我有一个 UITextView 应该消耗屏幕的高度,减去导航栏和键盘的高度(当视图加载时键盘出现)。显然,在 4 英寸设备上,这意味着文本视图应该稍高一些。Interface Builder中是否可以使高度设备依赖?

如果没有,我可以用代码来做吗?是否可以没有一些自动布局约束?

4

4 回答 4

2

使用自动布局约束很容易做到这一点。不使用它有什么特殊原因吗?

于 2013-10-06T03:40:02.943 回答
0

您需要在代码中进行此检查,您可以使用以下 Macor 来检查设备:

#define IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)?TRUE:FALSE

然后:

 if (IS_IPHONE5 )
 {
       //textView.frame = ..
 }
 else
 {
       //textView.frame = ..
 }

是的,您可以使用几个自动布局约束来做到这一点,这是做到这一点的最佳做法,请检查这个 SO 问题:

iPhone 4 & 5 自动调整垂直空间大小

于 2013-10-06T03:37:48.580 回答
0

您可以使用支柱和弹簧。但自动布局是新的热点。

iOS AutoLayout vs Springs & Struts

于 2013-10-06T03:46:32.813 回答
0

放弃null的答案:

我假设您将此 UITextView 放在 UIViewController 中?

您可以在运行时为 UITextView 设置框架。

在 viewDidLoad 中:

-(void)viewDidLoad {

    UITextView *textView = [[UITextView alloc] init];

    //216 is the height of the keyboard, 20 is the height of the status bar
    if (isiPhone5) {
        CGRect frame = CGRectMake(0, self.navigationBar.frame.size.height + 20, self.frame.size.width, 568-216); 
        [textView setFrame:frame];
    }
    else {
        CGRect frame = CGRectMake(0, self.navigationBar.frame.size.height + 20, self.frame.size.width, 480-216); 
        [textView setFrame:frame];
    }


}
于 2013-10-06T03:47:55.530 回答