สีข้อความชื่อ UIButton


168

ฉันกำลังตั้งค่าสีข้อความสำหรับ UIButton

headingButton.titleLabel.textColor = [UIColor colorWithRed:36/255.0 
                                                     green:71/255.0 
                                                      blue:113/255.0 
                                                     alpha:1.0];

มันไม่ได้เปลี่ยนรหัสสีเดียวกันกับที่ฉันใช้ในรหัสอื่นที่ใช้งานได้


มีความเป็นไปได้ที่ซ้ำกันของฉันจะเปลี่ยนสีของชื่อ UIButton ได้อย่างไร
sKhan

คำตอบ:


438

ใช้

Objective-C

[headingButton setTitleColor:[UIColor colorWithRed:36/255.0 green:71/255.0 blue:113/255.0 alpha:1.0] forState:UIControlStateNormal];

รวดเร็ว

headingButton.setTitleColor(.black, for: .normal)

2
งานนี้ แต่รหัสในคำถามเดิมก็ใช้งานได้บ่อยเช่นกัน ไม่มีใครรู้ว่าทำไมบางครั้งชื่อไม่สามารถตอบรหัสในคำถามได้?
crgt

7
เหตุผลคือเมื่อคลิกปุ่มหรือเปลี่ยนสถานะรหัสในปุ่มจะรีเซ็ตคุณสมบัติของ titleLabel เพื่อให้ตรงกับการตั้งค่าภายในที่ปุ่มนั้นมีสำหรับสถานะนั้น
psycotica0

1
เอกสารของ apple ระบุดังต่อไปนี้: "อย่าใช้วัตถุฉลากเพื่อตั้งค่าสีข้อความหรือสีเงาแทนให้ใช้ setTitleColor: forState: และ setTitleShadowColor: forState: เมธอดของคลาสนี้เพื่อทำการเปลี่ยนแปลงเหล่านั้น" ไม่มีคำอธิบายที่แท้จริงเกี่ยวกับ "ทำไม"
clauswey

สำคัญที่สุดเมื่อคุณตั้งค่าสีสำหรับ UIControlStateNormal ไม่จำเป็นต้องตั้งค่าสำหรับสถานะอื่น ๆ ทั้งหมด (ถ้าคุณต้องการให้ปุ่มของคุณมีลักษณะเหมือนกันเมื่อกด)
drpawelo

วิธีเปลี่ยนสีข้อความของปุ่มทั่วโลกในตัวแทนแอพ อาจจะใช้ UIButton.appearance (). setTitleColor?
Awais Fayyaz

5

ฉันสร้างชั้นเองMyButtonUIButtonยื่นออกมาจาก จากนั้นเพิ่มสิ่งนี้ภายในIdentity Inspector:

ป้อนคำอธิบายรูปภาพที่นี่

หลังจากนี้ให้เปลี่ยนประเภทปุ่มเป็นกำหนดเอง :

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นคุณสามารถตั้งค่าคุณลักษณะที่ต้องการtextColorและUIFontสำหรับUIButtonสถานะที่แตกต่างกัน:

ป้อนคำอธิบายรูปภาพที่นี่

จากนั้นฉันก็สร้างสองวิธีในMyButtonคลาสซึ่งฉันต้องโทรหาภายในโค้ดของฉันเมื่อฉันต้องการUIButtonให้แสดงเป็นไฮไลต์:

- (void)changeColorAsUnselection{
    [self setTitleColor:[UIColor colorFromHexString:acColorGreyDark] 
               forState:UIControlStateNormal & 
                        UIControlStateSelected & 
                        UIControlStateHighlighted];
}

- (void)changeColorAsSelection{
    [self setTitleColor:[UIColor colorFromHexString:acColorYellow] 
               forState:UIControlStateNormal & 
                        UIControlStateHighlighted & 
                        UIControlStateSelected];
}

คุณจะต้องตั้งค่าtitleColorสำหรับผิวธรรมดา, ไฮไลท์และเลือกเพราะสามารถมีได้มากกว่าหนึ่งรัฐในเวลาตามเอกสารของUIControlState UIControlStateหากคุณไม่ได้สร้างวิธีการเหล่านี้UIButtonจะแสดงตัวเลือกหรือไฮไลต์ แต่พวกเขาจะไม่อยู่ในการUIColorตั้งค่าของคุณUIInterface Builderเพราะพวกเขาจะพร้อมใช้งานสำหรับการแสดงสั้น ๆ ของการเลือกไม่ใช่สำหรับการแสดงตัวเลือก


ไม่ควรใช้ข้อมูลโค้ดสุดท้าย|แทน&?
130e13a

5

ในสวิฟต์:

UIButtonการเปลี่ยนสีข้อความฉลากค่อนข้างแตกต่างกว่าการเปลี่ยนมันสำหรับ หากต้องการเปลี่ยนสีข้อความสำหรับUIButtonใช้วิธีนี้:

self.headingButton.setTitleColor(UIColor(red: 107.0/255.0, green: 199.0/255.0, blue: 217.0/255.0), forState: UIControlState.Normal)

0

รุ่น swift 5:

โดยใช้สี inbuilt เริ่มต้น:

  1. button.setTitleColor(UIColor.green, for: .normal)

หรือ

คุณสามารถใช้สีที่กำหนดเองของคุณโดยใช้วิธีการ RGB:

  1. button.setTitleColor(UIColor(displayP3Red: 0.0/255.0, green: 180.0/255.0, blue: 2.0/255.0, alpha: 1.0), for: .normal)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.