Khi tôi thêm một chế độ xem phụ vào UIView
hoặc khi tôi đổi kích thước một chế độ xem phụ hiện có, tôi mong đợi [view sizeToFit]
và [view sizeThatFits]
để phản ánh thay đổi đó. Tuy nhiên, kinh nghiệm của tôi là sizeToFit
không làm gì cả, và sizeThatFits
trả về cùng một giá trị trước và sau khi thay đổi.Gặp sự cố khi nhận kích thước UIViewToFit để làm bất kỳ điều gì có ý nghĩa
Dự án thử nghiệm của tôi có một chế độ xem duy nhất chứa một nút. Nhấp vào nút sẽ thêm nút khác vào chế độ xem và sau đó gọi số sizeToFit
trên chế độ xem có chứa. Các giới hạn của chế độ xem được bán cho bảng điều khiển trước và sau khi thêm chế độ xem phụ.
- (void) logSizes {
NSLog(@"theView.bounds: %@", NSStringFromCGRect(theView.bounds));
NSLog(@"theView.sizeThatFits: %@", NSStringFromCGSize([theView sizeThatFits:CGSizeZero]));
}
- (void) buttonTouched {
[self logSizes];
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(10.0f, 100.0f, 400.0f, 600.0f);
[theView addSubview:btn];
[theView sizeToFit];
[self performSelector:@selector(logSizes) withObject:nil afterDelay:1.0];
}
Và kết quả là:
2010-10-15 15:40:42.359 SizeToFit[14953:207] theView.bounds: {{0, 0}, {322, 240}}
2010-10-15 15:40:42.387 SizeToFit[14953:207] theView.sizeThatFits: {322, 240}
2010-10-15 15:40:43.389 SizeToFit[14953:207] theView.bounds: {{0, 0}, {322, 240}}
2010-10-15 15:40:43.391 SizeToFit[14953:207] theView.sizeThatFits: {322, 240}
tôi phải mất một cái gì đó ở đây.
Cảm ơn.
Cảm ơn Ole. Nên đã đọc các tài liệu chặt chẽ hơn là nhìn vào đoạn mã dựa vào hành vi ghi đè trong một phân lớp cụ thể của UIView. – FishesCycle
Tôi ngạc nhiên không có câu trả lời ở đây chia sẻ việc thực hiện của họ như một ghi đè như vậy. – aleclarson