โดยปกติแล้วการตั้งค่าประเภทปุ่มเป็นแบบกำหนดเองใช้งานได้สำหรับฉัน แต่ด้วยเหตุผลอื่นฉันต้องใช้คลาสย่อย UIButton และตั้งค่าประเภทปุ่มกลับเป็นค่าเริ่มต้น (ระบบ) ดังนั้นการกะพริบจึงปรากฏขึ้นอีกครั้ง
การตั้งค่าUIView.setAnimationsEnabled(false)
ก่อนที่จะเปลี่ยนชื่อเรื่องและจากนั้นเป็นจริงอีกครั้งหลังจากนั้นก็ไม่ได้หลีกเลี่ยงการกะพริบสำหรับฉันไม่ว่าฉันจะโทรออกself.layoutIfNeeded()
หรือไม่ก็ตาม
สิ่งนี้และเฉพาะสิ่งนี้ตามลำดับต่อไปนี้เท่านั้นที่ทำงานกับฉันด้วย iOS 9 และ 10 เบต้า:
1) สร้างคลาสย่อยสำหรับ UIButton (อย่าลืมตั้งคลาสแบบกำหนดเองสำหรับปุ่มใน Storyboard ด้วย)
2) แทนที่setTitle:forState:
ดังต่อไปนี้:
override func setTitle(title: String?, forState state: UIControlState) {
UIView.performWithoutAnimation({
super.setTitle(title, forState: state)
self.layoutIfNeeded()
})
}
ในตัวสร้างส่วนต่อประสานคุณสามารถปล่อยให้ปุ่มประเภทเป็นระบบไม่จำเป็นต้องเปลี่ยนเป็นประเภทที่กำหนดเองสำหรับวิธีการนี้ในการทำงาน
ฉันหวังว่านี่จะช่วยให้คนอื่นฉันได้พยายามมานานแล้วด้วยปุ่มกะพริบที่น่ารำคาญที่ฉันหวังว่าจะหลีกเลี่ยงให้คนอื่น;)