iOS以编程方式生成的视图具有隐藏的约束,导致与自动布局发生冲突

牧羊人

这是链接到视图控制器的非常基本的视图。该视图具有单个UILabel,该UILabel放置有编码约束。该代码实际上可以正确运行,但是控制台正在注册约束冲突,并且我无法弄清楚代码的哪一部分正在创建冲突。

LocationView.m文件

#import "LocationView.h"

@implementation LocationView

@synthesize locationTitle;    

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        [self setBackgroundColor: [UIColor blueColor]];
        locationTitle = [[UILabel alloc]init];
        [locationTitle setTranslatesAutoresizingMaskIntoConstraints:NO];
        locationTitle.backgroundColor = [UIColor whiteColor];
        [self addSubview:locationTitle];

        NSDictionary *viewLocationTitle = NSDictionaryOfVariableBindings(locationTitle);

        [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[locationTitle]|"
                                                                     options:0
                                                                     metrics:0
                                                                       views:viewLocationTitle]];

        [self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[locationTitle(50)]|"
                                                                     options:0
                                                                     metrics:0
                                                                       views:viewLocationTitle]];

- (void)updateConstraints {
    [super updateConstraints]; 
}
@end

控制台错误

Unable to simultaneously satisfy constraints. 
(
    "<NSLayoutConstraint:0x109510990 V:|-(NSSpace(20))-[UILabel:0x10950b660]   (Names: '|':LocationView:0x10950acc0 )>",
    "<NSLayoutConstraint:0x109510c10 V:[UILabel:0x10950b660(50)]>",
    "<NSLayoutConstraint:0x109510c60 V:[UILabel:0x10950b660]-(0)-|   (Names: '|':LocationView:0x10950acc0 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x108f3ae00 h=--& v=--& V:[LocationView:0x10950acc0(568)]>"
)
Ansible

我认为您是在说要使其高50点并固定在超级视图的顶部和底部(在标签的前后都包含|)。

尝试将垂直约束更改为

@"V:|-[locationTitle(50)]"

或者,您可以为这些约束之一添加较低的优先级,但是我想这就是您的意思。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

iOS将视图添加为子视图,以编程方式自动布局冲突约束

iOS:具有隐藏视图的布局约束

使用自动布局隐藏UIView时以编程方式添加约束

以编程方式为UIView的子视图设置自动布局约束

以编程方式创建用于不同尺寸类的具有不同常量的自动布局约束

如何隐藏具有纵横比自动布局约束的UIImageView?

以编程方式禁用自动布局约束

以编程方式访问自动布局约束

如何以编程方式创建具有约束的视图

使用自动布局约束以编程方式创建四个具有相同高度和宽度的UIView

使用自动布局以编程方式添加视图会产生“ NSGenericException”,原因:“无法在视图上安装约束

Swift:以编程方式为子视图设置自动布局约束不调整视图大小

以编程方式添加具有自动布局的UISLider

在具有自动布局的UIView中以编程方式WKwebView

如何以编程方式添加自动布局约束以使按钮在其视图底部上方50点?

以编程方式更改自动布局约束后,视图未更新

在具有特定约束的滚动视图中显示图像(具有自动布局)

针对不同设备方向以编程方式且没有尺寸类别的各种自动布局约束?

以编程方式自动布局:更新视图的垂直空间以移动所有内部视图

以编程方式添加时,默认缺少自动布局约束

如何以编程方式在约束布局中移动视图(按钮)?

以编程方式在一组视图上设置布局约束

生成的setter与接口方法发生冲突

生成启动URL时发生冲突

具有旋转视图的约束布局

具有可拉伸视图的约束布局

iOS-使用自动布局以编程方式将UIView置于超级视图的中心

以编程方式将自定义按钮添加到具有约束的视图

如何使用swift以编程方式添加具有某些约束的图像视图?