Thông thường chỉ cần đặt loại nút thành Tùy chỉnh hoạt động cho tôi, nhưng vì lý do khác, tôi cần phải phân lớp UIButton và đặt loại nút trở về mặc định (Hệ thống), do đó, nhấp nháy xuất hiện lại.
Đặt UIView.setAnimationsEnabled(false)
trước khi thay đổi tiêu đề và sau đó trở lại thành đúng sau đó không tránh được nháy mắt cho tôi, bất kể tôi có gọi self.layoutIfNeeded()
hay không.
Điều này và chỉ điều này theo thứ tự chính xác sau đây, đã hoạt động với tôi với iOS 9 và 10 beta:
1) Tạo một lớp con cho UIButton (đừng quên đặt lớp tùy chỉnh cho nút trong Bảng phân cảnh).
2) Ghi đè setTitle:forState:
như sau:
override func setTitle(title: String?, forState state: UIControlState) {
UIView.performWithoutAnimation({
super.setTitle(title, forState: state)
self.layoutIfNeeded()
})
}
Trong Trình tạo giao diện, bạn có thể để loại nút thành Hệ thống, không cần thay đổi thành Loại tùy chỉnh để phương pháp này hoạt động.
Tôi hy vọng điều này sẽ giúp được người khác, tôi đã vật lộn quá lâu với các nút nhấp nháy khó chịu mà tôi hy vọng sẽ tránh được cho người khác;)