具有自动布局的UITableViewCell中动态调整大小的UIWebView-违反约束

猎户座爱德华兹

我有一个UITableViewCell包含的UIWebView表格视图单元格根据Web视图的内容调整其高度。我一切都很好,但是当视图加载时,我在调试器中遇到了一个违反约束的异常(该应用程序继续运行并且在功能上正常运行,但是我想尽可能解决这个异常)。

我如何设置它:

TableView设置像这样的单元格高度:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if(indexPath.section == 0) {
        [_topCell layoutIfNeeded];
        CGFloat finalHeight =  [_topCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
        return finalHeight + 1;
    }

单元格约束如下:

  1. 从单元格的contentView(顶部)到webView的任意7px偏移量
  2. Web视图具有62px的任意固定高度限制(一旦加载内容,稍后将展开)
  3. 从webView到单元格的contentView的任意8px偏移量(底部)

在我的viewDidLoad中,我告诉webView去加载一个URL,在中webViewDidFinishLoad,我更新Web视图的高度约束,像这样

-(void)webViewDidFinishLoad:(UIWebView *)webView {
    CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
    // fittingSize is approx 500
    
    [self.tableView beginUpdates];

    // Exceptions happen on the following line setting the constant
    _topCell.webViewHeightConstraint.constant = fittingSize.height;

    [_topCell layoutSubviews];
    [self.tableView endUpdates];
}

异常如下所示:

Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x10964b250 V:[webView(62)]   (Names: webView:0x109664a00 )>",
    "<NSLayoutConstraint:0x109243d30 V:|-(7)-[webView]   (Names: webView:0x109664a00, cellContent:0x1092436f0, '|':cellContent:0x1092436f0 )>",
    "<NSLayoutConstraint:0x109243f80 V:[webView]-(8)-|   (Names: cellContent:0x1092436f0, webView:0x109664a00, '|':cellContent:0x1092436f0 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x10967c210 h=--& v=--& V:[cellContent(78)]   (Names: cellContent:0x1092436f0 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x10964b250 V:[webView(62)]   (Names: webView:0x109664a00 )>

这似乎有点不可思议。这意味着设置Web视图高度的约束将被打破,但是Web视图的确可以正确设置其高度,并且tableview呈现得很好。

根据我的猜测,似乎新增加的Web视图高度限制(在Web视图加载后大约为500px)将与<NSAutoresizingMaskLayoutConstraint:0x10967c210 h=--& v=--& V:[cellContent(78)]将单元格高度设置为78(由界面构建器放置在那里)相冲突这是有道理的,但是我不希望该单元格的内容具有78px的固定高度,我希望它增加其高度,并且在功能上,除这些例外情况外,它实际上是这样做的。

  • 我尝试设置_topCell.contentView.translatesAutoresizingMaskIntoConstraints = NO;以尝试删除NSAutoresizingMaskLayoutConstraint-这将停止例外,但是所有其他布局都被弄乱了,并且Web视图在表格视图中间居高约10像素,这是毫无原因的。

  • 我也试着设置_topCell.contentView.autoresizingMask |= UIViewAutoresizingFlexibleHeight;viewDidLoad有希望影响内容查看78px高度约束,但这并没有影响

任何帮助将非常感激

猎户座爱德华兹

一个替代答案,最终变得简单得多:

将webViewHeight约束的优先级设置为非必需的优先级。效果很好,没有警告。我建议去这个:-)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

具有自动布局的UITableViewCell中动态调整大小的UIWebView-违反约束

来自分类Dev

VHDL中违反索引约束

来自分类Dev

VHDL中违反索引约束

来自分类Dev

WAS 8.5中违反了类加载约束

来自分类Dev

具有可选参数的构造方法违反了new()约束

来自分类Dev

Postgres中所有约束违反的错误消息

来自分类Dev

如何从JPA唯一约束违反中获取价值?

来自分类Dev

违反Entity Framework Core中的PRIMARY KEY约束

来自分类Dev

具有自动布局约束的UITableViewCell子类大小不正确

来自分类Dev

在Q学习中添加约束并在违反约束时分配奖励

来自分类Dev

防止在第三张表中违反FK约束的约束

来自分类Dev

具有自动布局的UITableViewCell-contentView宽度约束失败

来自分类Dev

违反完整性约束-如何在具有类表继承的学说中创建实体

来自分类Dev

空值违反了非空约束,但是模型具有空白= True null = True

来自分类Dev

PDO“违反完整性约束-重复条目”,但表中没有重复项

来自分类Dev

PDO“违反完整性约束-重复条目”,但表中没有重复项

来自分类Dev

具有动态变量的自动布局约束?

来自分类Dev

缩进UITableViewCell中的所有自动布局约束

来自分类Dev

如何在自定义约束注释的约束违反消息中显示字段名称描述?

来自分类Dev

如何在自定义约束注释的约束违反消息中显示字段名称描述?

来自分类Dev

将Eclipse动态Web项目转换为Maven时发生“违反加载程序约束”

来自分类Dev

“违反完整性约束:1062重复的条目”-但没有重复的行

来自分类Dev

Hibernate OneToMany违反完整性约束:外键没有父代

来自分类Dev

SQL错误:违反完整性约束:外键没有父级

来自分类Dev

列“ user_id”中的空值违反了Django 1.9中的非空约束

来自分类Dev

Django-列中的空值违反了Django Admin中的非空约束

来自分类Dev

Django-列中的空值违反了Django Admin中的非空约束

来自分类Dev

动态地创建具有自动布局约束的视图?在Objective-C中?

来自分类Dev

java.lang.LinkageError:违反加载程序约束;解决接口方法时(在服务类中)

Related 相关文章

  1. 1

    具有自动布局的UITableViewCell中动态调整大小的UIWebView-违反约束

  2. 2

    VHDL中违反索引约束

  3. 3

    VHDL中违反索引约束

  4. 4

    WAS 8.5中违反了类加载约束

  5. 5

    具有可选参数的构造方法违反了new()约束

  6. 6

    Postgres中所有约束违反的错误消息

  7. 7

    如何从JPA唯一约束违反中获取价值?

  8. 8

    违反Entity Framework Core中的PRIMARY KEY约束

  9. 9

    具有自动布局约束的UITableViewCell子类大小不正确

  10. 10

    在Q学习中添加约束并在违反约束时分配奖励

  11. 11

    防止在第三张表中违反FK约束的约束

  12. 12

    具有自动布局的UITableViewCell-contentView宽度约束失败

  13. 13

    违反完整性约束-如何在具有类表继承的学说中创建实体

  14. 14

    空值违反了非空约束,但是模型具有空白= True null = True

  15. 15

    PDO“违反完整性约束-重复条目”,但表中没有重复项

  16. 16

    PDO“违反完整性约束-重复条目”,但表中没有重复项

  17. 17

    具有动态变量的自动布局约束?

  18. 18

    缩进UITableViewCell中的所有自动布局约束

  19. 19

    如何在自定义约束注释的约束违反消息中显示字段名称描述?

  20. 20

    如何在自定义约束注释的约束违反消息中显示字段名称描述?

  21. 21

    将Eclipse动态Web项目转换为Maven时发生“违反加载程序约束”

  22. 22

    “违反完整性约束:1062重复的条目”-但没有重复的行

  23. 23

    Hibernate OneToMany违反完整性约束:外键没有父代

  24. 24

    SQL错误:违反完整性约束:外键没有父级

  25. 25

    列“ user_id”中的空值违反了Django 1.9中的非空约束

  26. 26

    Django-列中的空值违反了Django Admin中的非空约束

  27. 27

    Django-列中的空值违反了Django Admin中的非空约束

  28. 28

    动态地创建具有自动布局约束的视图?在Objective-C中?

  29. 29

    java.lang.LinkageError:违反加载程序约束;解决接口方法时(在服务类中)

热门标签

归档