0

我想在代碼中佈局一些視圖。在運行時,我需要檢查我們有多少交易,然後適當地佈置代碼。我有一個UILabel和一個UIImageView。以編程方式Autolayout和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的財產translatesAutoresizingMaskIntoConstraints)

此錯誤是由以下約束造成的:

[查看addConstraints: [NSLayoutConstraint constraintsWithVisualFormat:@「H:| [numberOfDealsLabel] [dealsImage] |」 options:nil metrics:nil views:views]];

我不明白爲什麼這會導致問題。我的第一個想法是因爲UILabel太大了,加上圖像的大小造成了問題。不過,我將文本大小更改爲非常小的數字,而且我仍然遇到同樣的問題。

任何有關可能導致此問題的建議都會很好。

回答

3

從什麼樣子,你是不是呼籲UIIamgeView「translatesAutoresizingMaskIntoConstraints = NO」,這應該幫助至少一點點如果不只是解決整個問題

這樣,這是我第一件事會怎麼做,如果我是你:

UIImageView *dealsImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"deal"]]; 
[dealsImage setTranslatesAutoresizingMaskIntoConstraints:FALSE]; //this is new code 
[view addSubview:dealsImage]; 

從蘋果:

For views that are aware of Auto Layout, in most circumstances you want translatesAutoresizingMaskIntoConstraints to be NO.

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AdoptingAutoLayout/AdoptingAutoLayout.html

+0

這是確切的問題。我已經將它設置爲UILabel,但不是imageView。謝謝。 – pls

相關問題