Tôi có một cái nhìn hình ảnh mà tôi đang thực hiện các góc tròn trên bằng cách ghi đè sau trong lớp con của tôi:Phương thức nào được gọi trên UIView khi phương thức này được thay đổi kích thước bằng tính năng tự động điền?
-(void)setFrame:(CGRect)frame {
[super setFrame:frame];
[self.layout setCornerRadius:frame.size.width/10.0];
}
này hoạt động tuyệt vời cho màn hình hiển thị ban đầu của hình ảnh, nhưng nếu kích thước của hình ảnh thay đổi do để xoay thiết bị hoặc một số cơ chế khác, phương pháp này không được gọi để thực hiện thay đổi kích thước.
Tôi đang dùng autolayout và tôi muốn biết phương thức UIView (và do đó UIImageView) đang được gọi khi các ràng buộc của tôi thay đổi kích thước chế độ xem để tôi có thể tính toán lại bán kính góc của mình bất cứ khi nào thay đổi kích thước này diễn ra. Giả định của tôi (dường như sai) là hệ thống tự động trả lời được gọi là setFrame:
để di chuyển/thay đổi kích thước chế độ xem nếu cần.
Hãy thử đặt điều này trong 'layoutSubviews'. – Rob
Đặt nó trong layoutSubviews hoạt động! Cảm ơn Rob. Vấn đề duy nhất tôi thấy là sự thay đổi đột ngột thay vì hoạt hình trơn tru, tạo ra hiệu ứng "nhấp nháy" khi hình ảnh được thay đổi kích thước từ lớn thành nhỏ và ngược lại. Tôi đã cố gắng đặt điều này trong drawRect: để xem nó có cho tôi một hình động trơn tru của các góc thay đổi kích thước, nhưng có vẻ như drawRect: thậm chí không được gọi (ít nhất là không có trong trình mô phỏng)! – Michael
Hãy xem Tài liệu tham khảo lớp UIView: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/index.html#//apple_ref/doc/uid/TP40006816 Có là một khối cụ thể có tên là "Ghi chú Subclassing" có thể rất hữu ích cho bạn. – CarlesCF