Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UITextView仅在iPad上无法正确调整大小_Ios_Objective C_Ipad_Autolayout_Uitextview - Fatal编程技术网

Ios UITextView仅在iPad上无法正确调整大小

Ios UITextView仅在iPad上无法正确调整大小,ios,objective-c,ipad,autolayout,uitextview,Ios,Objective C,Ipad,Autolayout,Uitextview,我有一个静态UITableView,在1个部分中有3行。每行包含一个UITextView,该视图应根据内容调整大小。每个UITextView对象都禁用了滚动以强制其增长。每个都固定在单元格的contentView的所有4个边上,并且没有其他约束 当我在iPad(real或sim)上运行时,无论UITextView的内容如何,手机都会调整为单行文本。在调试器中检查视图层次结构时,我看到UITextView高度设置为27.5,即使内容视图高度为183.5。这似乎是UITableViewCellCon

我有一个静态UITableView,在1个部分中有3行。每行包含一个UITextView,该视图应根据内容调整大小。每个UITextView对象都禁用了滚动以强制其增长。每个都固定在单元格的contentView的所有4个边上,并且没有其他约束

当我在iPad(real或sim)上运行时,无论UITextView的内容如何,手机都会调整为单行文本。在调试器中检查视图层次结构时,我看到UITextView高度设置为27.5,即使内容视图高度为183.5。这似乎是UITableViewCellContentView上的高度约束的结果,该约束限制了单元格高度。这不是我设置的约束。我的表视图控制器没有heightForRow或cellForRow方法,因为它是一个静态表视图,并且对所有内容都使用自动布局。我不知道这个约束是如何添加的

这是一个完全相同的层次结构,在iPod touch上运行时,在完全相同的点上有完全相同的内容。请注意,这次UITextView高度和内容高度相同。在这种情况下,高度上的UITableViewCellContentView约束足够大,可以容纳UITextView高度

在这两种情况下,都是同一个源执行和显示相同的内容。该内容包含带回车符的短文本行,这就是为什么它在两个屏幕大小中的大小应该相同。UITextView希望将其高度调整为183.5,但在iPad上,单元格高度不必要地受到iOS生成的约束

以下是viewDidLoad的代码:

- (void)viewDidLoad {
    [super viewDidLoad];

    //shrink the uiswitch a little bit
    self.displayRegexCharsSwitch.transform  = CGAffineTransformMakeScale(0.70, 0.70);

    //these next 2 lines set up the table to automatically resize based on content
    self.tableView.estimatedRowHeight = 100.0f;
    self.tableView.rowHeight = UITableViewAutomaticDimension;

    //next line hides the blank cells
    self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

    //these are needed on iPad or rows with accessory view don't resize
    [self.tableView beginUpdates];
    [self.tableView endUpdates];
}
同样,由于使用静态表视图,表视图控制器中没有heightForRow或cellForRow

我很困惑。如果内容相同且代码相同,为什么UITextField在iPad上报告的内容大小与iPod不同?从层次结构视图可以清楚地看到,UITextField内部知道其高度为200,但contentSize返回27.5。这是一个静态表视图,因此没有heightForRow方法和cellForRow方法。我依靠自动布局来管理所有的布局,这在iPad上是正确的

编辑

仅供参考-设计完全基于任何/任何尺寸等级


找到了!我将布局移植到一个新项目中,以将问题与项目中正在进行的其他事情隔离开来。新项目中没有出现布局问题。因此,我比较了整个项目设置,发现新项目的部署目标为iOS 8.3,而原始项目的部署目标为iOS 6.0。当我将新的项目部署目标设置为iOS 6.0时,出现了布局问题。iOS 7.0也是如此。但是,对于iOS 8.0及更高版本,问题消失了。是时候强制我的用户升级到iOS 8了


您在“大小类视图”中执行的大多数约束是什么?最好使用Any/Any,除非iPad和iPhone之间有真正的区别。您还需要观看popover,因为popover中的大小类是紧凑宽度。因此,在任何/任何大小的类别中编码是最安全的。它的声音大小类相关,因为它似乎约束不一致。@RoryMcKinnel对于这个屏幕,我只使用Any/Any size类-请参阅我刚才在文章末尾添加的屏幕打印。一件奇怪的事情是,我将这个故事板移植到一个新的单视图项目中,看看我是否可以将问题从我的项目中分离出来,并且在iPad和iPhone上的新项目中,屏幕布局正确,即使故事板相同,表视图控制器相同。是否存在影响布局的项目范围设置?