在iOS 7下,如何使我的UITextView高度取决于运行应用程序的设备类型(4英寸屏幕对3.5)

时间:2013-10-06 03:32:14

标签: ios objective-c uiview ios7 uitextview

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

如果没有,我可以在代码中执行吗?是否可以不使用某些自动布局约束?

4 个答案:

答案 0 :(得分:2)

通过使用自动布局约束来实现它会非常容易。是否有任何特殊原因不使用它?

答案 1 :(得分:0)

您需要在代码中执行此操作,您可以在Macor下方使用以检查设备:

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

然后:

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

是的,你可以使用一些自动布局约束来做到这一点,这是最好的做法,检查这个问题:

iPhone 4 & 5 Autoresize Vertical Space

答案 2 :(得分:0)

你可以使用支柱和弹簧。但汽车布局是新的热点。

iOS AutoLayout vs Springs & Struts

答案 3 :(得分: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];
    }


}