Tôi có UIView có chứa UIButton. UIButton có 2 tựa đề được đặt cho các trạng thái UIControlStateNormal ("Follow") và UIControlStateSelected ("Following"). Tôi đang sử dụng bố trí tự động trên UIButton và nó có một hạn chế để được một khoảng cách nhất định từ phía trên của superview và khác là một khoảng cách nhất định từ phía bên trái của superview. Tôi cũng đã sử dụng "Kích thước để vừa với Nội dung" trên đó.Kích thước nội tại không cập nhật khi thay đổi trạng thái UIButton
Khi tôi đặt nút ở trạng thái đã chọn từ mã, tiêu đề thay đổi chính xác nhưng chiều rộng nội tại của UIButton không thay đổi sao cho khi thay đổi từ "Theo dõi" thành "Theo dõi", văn bản sẽ được bỏ qua.
self.selected = self.following;
Khi tôi tiếp cận vấn đề khác nhau và chỉ cần thay đổi văn bản cho UIControlStateNormal khi ai đó chạm vào nút, những thay đổi nút kích thước chính xác.
NSString *title = (self.following) ? @"Following" : @"Follow"
[self setTitle:title forState:UIControlStateNormal];
Đây có phải là một lỗi trong UIKit? Tôi mong đợi nút thay đổi kích thước nội tại của nó để phản ánh chính xác kích thước mới của văn bản khi trạng thái của nó thay đổi đặc biệt vì có những thứ khác tôi muốn thay đổi bên cạnh văn bản cho trạng thái 2 nút.
Có ai đã thử điều này muộn (iOS 8.2+) không? Giải pháp trực tiếp duy nhất đang làm việc cho tôi là @ abdullah's setTitle: forState. Tôi cũng đã thử sau dòng đó với layoutIfNeeded. –
để hoàn thành và tương thích với bất kỳ hệ thống bố cục nào tôi đã phải làm theo điều này với gọi setNeedsLayout và gọi nó trên mọi giám sát của superview cho đến khi không còn ... dường như là cách duy nhất thay đổi sẽ áp dụng cho mọi thứ có kích thước va chạm. (nếu đưa vào các bản xem trước, v.v.) – Ben