Màu văn bản tiêu đề UIButton


168

Tôi đang đặt màu văn bản cho UIButton

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

Nó không thay đổi màu mã giống như tôi đang sử dụng trong một mã khác, nó đang hoạt động.


Câu trả lời:


438

sử dụng

Mục tiêu-C

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

Nhanh

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

2
những công việc này. nhưng mã trong câu hỏi ban đầu cũng thường hoạt động. có ai biết tại sao tiêu đề đôi khi không trả lời mã trong câu hỏi không?
crgt

7
Lý do là khi nút được nhấp hoặc thay đổi trạng thái, mã trong nút đặt lại các thuộc tính của titleLabel để khớp với cài đặt bên trong mà nút có cho trạng thái đó.
psycotica0

1
tài liệu của apple nêu rõ: "Không sử dụng đối tượng nhãn để đặt màu văn bản hoặc màu bóng. Thay vào đó, hãy sử dụng phương thức setTitleColor: forState: và setTitleShadowColor: forState: của lớp này để thực hiện các thay đổi đó." Không có lời giải thích thực sự về "tại sao" mặc dù.
clauswey 4/03/2015

QUAN TRỌNG NHẤT khi bạn đặt màu cho UIControlStateN normal, không cần thiết lập màu đó cho tất cả các trạng thái khác (nếu bạn muốn nút của mình trông giống nhau khi nhấn).
drpawelo

cách thay đổi màu văn bản nút trên toàn cầu trong đại biểu ứng dụng. Có thể sử dụng UIButton.appparent (). SetTitleColor?
Awais Fayyaz

5

Tôi đã tạo một lớp tùy chỉnh MyButton mở rộng từ UIButton. Sau đó thêm vào bên trong Identity Inspector:

nhập mô tả hình ảnh ở đây

Sau đó, thay đổi loại nút thành Tùy chỉnh :

nhập mô tả hình ảnh ở đây

Sau đó, bạn có thể đặt các thuộc tính như textColorUIFontcho của bạn UIButtoncho các trạng thái khác nhau:

nhập mô tả hình ảnh ở đây

Sau đó, tôi cũng đã tạo hai phương thức bên trong MyButtonlớp mà tôi phải gọi bên trong mã của mình khi tôi muốn UIButtonhiển thị như được tô sáng:

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

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

Bạn phải đặt mức titleColorbình thường, tô sáng và chọn UIControlStatevì có thể có nhiều trạng thái tại một thời điểm theo tài liệu của UIControlState. Nếu bạn không tạo các phương thức này, thì UIButtonsẽ hiển thị lựa chọn hoặc tô sáng nhưng chúng sẽ không ở trong UIColorthiết lập của bạn bên trong UIInterface Buildervì chúng chỉ có sẵn để hiển thị ngắn một lựa chọn, không phải để hiển thị lựa chọn.


Không nên sử dụng đoạn mã cuối cùng |thay vì &?
130e13a

5

Trong Swift:

Thay đổi màu văn bản nhãn khá khác so với thay đổi màu cho a UIButton. Để thay đổi màu văn bản cho việc UIButtonsử dụng phương pháp này:

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

0

phiên bản 5 nhanh chóng:

Bằng cách sử dụng màu inbuilt mặc định:

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

HOẶC LÀ

Bạn có thể sử dụng màu tùy chỉnh của mình bằng phương pháp 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)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.