我試圖通過編程方式使用自動佈局顯示錶格單元格中的內容。我想的內容,以顯示如下:自動佈局 - 複雜的約束條件
[標題]
[圖像] [日期]
[文本的長字符串,跨越表的寬度,最大的兩行]
我的代碼如下所示:
-(NSArray *)constraints {
NSMutableArray * constraints = [[NSMutableArray alloc]init];
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(_titleLabel, _descriptionLabel, _dateLabel, _ratingBubbleView);
NSDictionary *metrics = @{@"padding":@(kPadding)};
NSString *const kVertical = @"V:|-(>=0,<=padding)-[_titleLabel]-(<=padding)-[_ratingBubbleView]-(<=padding)-[_descriptionLabel]-(>=0,<=padding)-|";
NSString *const kVertical2 = @"V:|-(>=0,<=padding)-[_titleLabel]-(<=padding)-[_dateLabel]-(<=padding)-[_descriptionLabel]-(>=0,<=padding)-|";
NSString *const kHorizontalDescriptionLabel = @"H:|-padding-[_descriptionLabel]-padding-|";
NSString *const kHorizontalTitleLabel = @"H:|-padding-[_titleLabel]";
NSString *const kHorizontalDateLabel = @"H:|-padding-[_ratingBubbleView]-padding-[_dateLabel]";
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:kVertical options:0 metrics:metrics views:viewsDictionary]];
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:kVertical2 options:0 metrics:metrics views:viewsDictionary]];
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:kHorizontalDescriptionLabel options:0 metrics:metrics views:viewsDictionary]];
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:kHorizontalTitleLabel options:0 metrics:metrics views:viewsDictionary]];
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:kHorizontalDateLabel options:0 metrics:metrics views:viewsDictionary]];
return constraints;
}
這是結果:
爲什麼'(> = 0,<= padding)'?你可能會添加一個你試圖實現的佈局的圖片(或草圖)嗎?僅僅通過觀察約束就很難理解你想要完成什麼。另外,什麼是不正確的顯示?你說這是不正確的,但你沒有說它實際上在做什麼。 – Fogmeister 2014-09-24 14:40:55
這段代碼給了你什麼結果?具體而言,「圖片和日期顯示不正確」對於那些試圖幫助你的人沒有用處。 – rdelmar 2014-09-24 14:43:52
@Fogmeister我更新了問題以顯示我的意思。感謝您指出了這一點。至於'(> = 0,<= padding)',我對於Objective-C和自動佈局還是很新的,而且這個由前面的開發人員負責這個項目。 – Matt 2014-09-24 14:48:48