我有一个 UITextView 应该消耗屏幕的高度,减去导航栏和键盘的高度(当视图加载时键盘出现)。显然,在 4 英寸设备上,这意味着文本视图应该稍高一些。Interface Builder中是否可以使高度设备依赖?
如果没有,我可以用代码来做吗?是否可以没有一些自动布局约束?
我有一个 UITextView 应该消耗屏幕的高度,减去导航栏和键盘的高度(当视图加载时键盘出现)。显然,在 4 英寸设备上,这意味着文本视图应该稍高一些。Interface Builder中是否可以使高度设备依赖?
如果没有,我可以用代码来做吗?是否可以没有一些自动布局约束?
使用自动布局约束很容易做到这一点。不使用它有什么特殊原因吗?
您需要在代码中进行此检查,您可以使用以下 Macor 来检查设备:
#define IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)?TRUE:FALSE
然后:
if (IS_IPHONE5 )
{
//textView.frame = ..
}
else
{
//textView.frame = ..
}
是的,您可以使用几个自动布局约束来做到这一点,这是做到这一点的最佳做法,请检查这个 SO 问题:
您可以使用支柱和弹簧。但自动布局是新的热点。
放弃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];
}
}