自动布局在 centerX-centerY 上不起作用

Posted

技术标签:

【中文标题】自动布局在 centerX-centerY 上不起作用【英文标题】:Autolayout not working on centerX- centerY 【发布时间】:2017-07-17 10:35:03 【问题描述】:

我正在尝试手动添加约束;每次代码尝试添加 centerX 和 centerY 约束时,我都会遇到以下错误:

由于未捕获的异常“NSGenericException”而终止应用程序, 原因:'无法在视图上安装约束。是否有约束 从视图的子树之外引用一些东西?那是 非法的。约束: (活动)> 查看:>'

我检查了之前的多个问题,但没有任何帮助:/

谢谢

代码

[cell.contentView addSubview:imageView];
[cell.contentView addSubview:title];
title.translatesAutoresizingMaskIntoConstraints = NO;
imageView.translatesAutoresizingMaskIntoConstraints = NO;


NSLayoutConstraint *imageViewHeightConstraint = [NSLayoutConstraint
                                                    constraintWithItem:imageView
                                                    attribute:NSLayoutAttributeHeight
                                                    relatedBy:NSLayoutRelationEqual
                                                    toItem:nil
                                                    attribute:NSLayoutAttributeNotAnAttribute
                                                    multiplier:1.0
                                                    constant:[UIScreen mainScreen].bounds.size.width/8];
NSLayoutConstraint *imageViewWidthtConstraint = [NSLayoutConstraint
                                                 constraintWithItem:imageView
                                                 attribute:NSLayoutAttributeWidth
                                                 relatedBy:NSLayoutRelationEqual
                                                 toItem:imageView
                                                 attribute:NSLayoutAttributeHeight
                                                 multiplier:1.0
                                                 constant:0];
NSLayoutConstraint *imageViewCenterXConstraint = [NSLayoutConstraint
                                                 constraintWithItem:imageView
                                                 attribute:NSLayoutAttributeCenterX
                                                 relatedBy:NSLayoutRelationEqual
                                                 toItem:[imageView superview]
                                                 attribute:NSLayoutAttributeCenterX
                                                 multiplier:1.0
                                                 constant:0];

NSLayoutConstraint *imageViewCenterYConstraint = [NSLayoutConstraint
                                                  constraintWithItem:imageView
                                                  attribute:NSLayoutAttributeCenterY
                                                  relatedBy:NSLayoutRelationEqual
                                                  toItem:[imageView superview]
                                                  attribute:NSLayoutAttributeCenterY
                                                  multiplier:1.0
                                                  constant:0];
[imageView addConstraint:imageViewHeightConstraint];
[imageView addConstraint:imageViewWidthtConstraint];
[imageView addConstraint:imageViewCenterXConstraint];
[imageView addConstraint:imageViewCenterYConstraint];

【问题讨论】:

你可以在故事板中做吗?或者它必须是硬编码的...... 它不能在故事板中完成,因为我需要它是动态的! 请将您的代码发布为文本,而不是图片。 尝试删除addConstraint 行并在每次实例化约束后添加.active = YES。还将[image superview] 更改为cell @Swinny89 成功了!谢谢 【参考方案1】:

删除addConstraint 行并在每次约束实例化后添加.active = YES。还要将[image superview] 更改为cell

【讨论】:

【参考方案2】:

尝试将centerX和centerY约束添加到imageView的superview,而不是imageView

[cell.contentView addConstraint:imageViewCenterXConstraint]; 
[cell.contentView addConstraint:imageViewCenterYConstraint];

【讨论】:

【参考方案3】:

请在给 UIImageView 添加约束后试试这个。

对于目标 C

[cell.contentView layoutIfNeeded];
[self.view layoutIfNeeded];

对于斯威夫特

cell.contentView.layoutIfNeeded()
self.view.layoutIfNeeded()

请先试试这个,先给出约束,然后将你的 imageView 添加到单元格 contentView 中。

【讨论】:

【参考方案4】:

你为什么不使用:

imageView.center = cell.center

它应该使您的图像在单元格中居中。

【讨论】:

问题是专门要求自动布局解决方案。

以上是关于自动布局在 centerX-centerY 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

带有 UIScroller 的自动布局在 3.5" 设备上不起作用

布局 .xml 有时在某些 android 版本上不起作用

css flex布局在某些iPad上不起作用

检查自动故障转移是不是始终在可用性组上不起作用?

自动完成关闭在边缘浏览器上不起作用

Xml 音频列表播放器在移动设备上不起作用,并且自动播放不起作用