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

Posted

技术标签:

【中文标题】在 iOS 7 下,如何使我的 UITextView 高度取决于运行应用程序的设备类型(4 英寸屏幕 vs 3.5)【英文标题】:Under iOS 7, how do I make my UITextView's height dependent on the type of device running the app (4 inch screen vs 3.5) 【发布时间】:2013-10-06 03:32:14 【问题描述】:

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

如果没有,我可以用代码来做吗?是否可以不使用一些 Auto Layout 约束?

【问题讨论】:

【参考方案1】:

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

【讨论】:

不,我只是好奇是否有简单的方法。我假设我调整检测代码中的设备并相应地调整常量?【参考方案2】:

你需要在你的代码中做这个检查,你可以使用下面的 Macor 来检查设备:

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

然后:

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

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

iPhone 4 & 5 Autoresize Vertical Space

【讨论】:

【参考方案3】:

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

ios AutoLayout vs Springs & Struts

【讨论】:

【参考方案4】:

放弃 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];
    



【讨论】:

以上是关于在 iOS 7 下,如何使我的 UITextView 高度取决于运行应用程序的设备类型(4 英寸屏幕 vs 3.5)的主要内容,如果未能解决你的问题,请参考以下文章

如何使我的 Android Swipeable CardView 更像 IOS 7 邮件应用程序(滑动以显示按钮)

使我的 iOS 7 应用程序中的键盘半透明/透明

如何使我的程序在 Windows Vista 和 Windows 7 中运行?

在 iphone 上查看时,如何使我的桌面选择列表表现得像 ios 选择器?

iOS - 如何使我的视图不响应事件

当触发 iOS Safari 中的虚拟键盘时,它会使我的 CSS 过渡闪烁。如何解决这个问题?