我正在尝试在代码中布局一些视图。在运行时,我需要检查我们有多少笔交易,然后适当地布局代码。我有一个UILabel和一个UIImageView。
我创建对象如下:
UILabel *numberOfDealsLabel = [UILabel new];
[numberOfDealsLabel setFont:[UIFont fontWithName:@"HelveticaNeue-CondensedBold" size:50]];
numberOfDealsLabel.translatesAutoresizingMaskIntoConstraints = NO;
numberOfDealsLabel.textColor = [UIColor whiteColor];
[numberOfDealsLabel setTextAlignment:NSTextAlignmentCenter];
numberOfDealsLabel.numberOfLines = 1;
numberOfDealsLabel.text = [NSString stringWithFormat:@"%d", 2];
[numberOfDealsLabel sizeToFit];
numberOfDealsLabel.preferredMaxLayoutWidth = view.frame.size.width;
[view addSubview:numberOfDealsLabel];
UIImageView *dealsImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"deal"]];
[view addSubview:dealsImage];
视图只是一个正方形。从这里开始,我试图添加以下约束,以使两个视图都拥抱视图的顶部并水平共享空间。
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[numberOfDealsLabel][dealsImage]|" options:nil metrics:nil views:views]];
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[numberOfDealsLabel]|" options:nil metrics:nil views:views]];
[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[dealsImage]|" options:nil metrics:nil views:views]];
我收到以下错误:
以下列表中的约束中至少有一个是您不想要的约束。尝试以下操作:(1)查看每个约束,并尝试找出不期望的约束; (2)查找添加了一个或多个不必要约束的代码并进行修复。 (注意:如果看到的是您不了解的NSAutoresizingMaskLayoutConstraints,请参阅有关UIView属性translationsAutoresizingMaskIntoConstraints的文档)
此错误是由以下约束引起的:
[查看addConstraints:[NSLayoutConstraint约束WithVisualFormat:@“ H:| [numberOfDealsLabel] [dealsImage] |”选项:零指标:零视图:观看次数]];
我不明白为什么这会引起问题。我的第一个想法是因为UILabel太大,并且它的大小加上图像导致了问题。但是,我将文本大小更改为非常小的数字,但仍然存在相同的问题。
关于可能导致此问题的任何建议都很好。
最佳答案
从外观上看,您不会在UIIamgeView上调用“ translatesAutoresizingMaskIntoConstraints = NO”,这应该至少可以帮助一点点,即使不仅仅是解决整个问题
因此,如果我是你,这是我要做的第一件事:
UIImageView *dealsImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"deal"]];
[dealsImage setTranslatesAutoresizingMaskIntoConstraints:FALSE]; //this is new code
[view addSubview:dealsImage];
从苹果公司:
对于了解自动版式的视图,在大多数情况下,
想要将autoresizingMaskIntoConstraints转换为NO。
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AdoptingAutoLayout/AdoptingAutoLayout.html
关于ios - 以编程方式自动布局和UIImageView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32327670/