在 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 邮件应用程序(滑动以显示按钮)
如何使我的程序在 Windows Vista 和 Windows 7 中运行?