Như Uli đã nhận xét dưới đây, cách thích hợp để thực hiện việc này là ghi đè layoutSubviews
và bố cục imageViews tại đó.
Nếu vì một lý do nào đó, bạn không thể phân lớp và ghi đè layoutSubviews
, việc quan sát bounds
sẽ hoạt động, ngay cả khi bị bẩn. Thậm chí tệ hơn, có một rủi ro khi quan sát - Apple không đảm bảo KVO hoạt động trên các lớp UIKit. Đọc thảo luận với Apple kỹ sư ở đây: When does an associated object get released?
gốc câu trả lời:
Bạn có thể sử dụng giá trị khóa quan sát:
[yourView addObserver:self forKeyPath:@"bounds" options:0 context:nil];
và thực hiện:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (object == yourView && [keyPath isEqualToString:@"bounds"]) {
// do your stuff, or better schedule to run later using performSelector:withObject:afterDuration:
}
}
Khi nào chế độ xem được thay đổi kích thước?Khi thiết bị quay hoặc khi người dùng xoay thiết bị bằng cảm ứng đa điểm? –
Chế độ xem này được thay đổi kích thước khi người dùng chạm vào nút trên chế độ xem khác (chế độ xem chính). –