Tôi đã phải đối mặt với một vấn đề tương tự, có chiều rộng hạn chế cho tôi nút và muốn chúng phát triển theo chiều dọc, tùy thuộc vào số lượng văn bản tôi muốn cung cấp cho chúng. tôi đã kết thúc với một giải pháp đơn giản, dựa trên những gì tôi đã học được trong các tài liệu của Apple (https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/ImplementingView/ImplementingView.html)
Tôi đã subclassed UIButton
và ghi đè hai chức năng:
- (void)setBounds:(CGRect)bounds {
if (!CGRectEqualToRect(bounds, self.bounds)) {
[self invalidateIntrinsicContentSize];
}
[super setBounds:bounds];
}
- (CGSize)intrinsicContentSize {
//
CGSize size;
self.titleLabel.frame = CGRectMake(self.titleLabel.frame.origin.x,
self.titleLabel.frame.origin.y,
self.frame.size.width - self.contentEdgeInsets.left - self.contentEdgeInsets.right - self.titleEdgeInsets.left - self.titleEdgeInsets.right,
0);
size = [self.titleLabel sizeThatFits:self.titleLabel.frame.size];
size = CGSizeMake(size.width, size.height + 20);
return size;
}
gì về cơ bản xảy ra ở đây là nút này làm mất kích thước nội tại của nó (chỉ khi các giới hạn thực sự mới - điều này là để ngăn chặn vòng lặp vô tận) và khi hệ thống yêu cầu kích thước nội dung nội tại, tôi tính toán lại dựa trên chiều rộng của nút. Chiều cao thêm 20px dành cho đệm. Tôi đã thử nhiều cách khác nhưng kể từ khi bố cục của tôi là tất cả dựa trên AutoLayout, tôi muốn một cái gì đó mà tôi không phải cập nhật bất cứ khi nào thiết bị quay hoặc như vậy. Điều này chỉ đơn giản là làm việc.
Chúc may mắn! Z.
Nguồn
2015-03-01 17:13:10
Bạn đã dẫn tôi đi đúng hướng ... cảm ơn! – TigerCoding