2013-09-23 42 views
7

Tôi muốn biết cách thay đổi Màu Tiêu đề của một UIButton về giá trị mặc định.UIButton Màu Tiêu đề Mặc định iOS7

Tôi có một nút mà tôi thay đổi màu tiêu đề để biểu thị thứ gì đó đang bật, như thế này;

[cell.offStateSwitch setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

Sau đó, khi nó tắt, tôi muốn thay đổi nó trở lại màu mặc định.

Tôi không thể tìm ra cách để có được màu hệ thống mặc định cho UIButton. Tôi đã tìm thấy rất nhiều người làm điều này bằng cách buộc một giá trị RGB cụ thể, nhưng điều đó không nhất thiết phải chính xác trên các phiên bản khác nhau của iOS.

Trả lời

1

Không có thuộc tính cho màu tiêu đề mặc định trong iOS, bạn có thể nhận đơn giản.

Chỉ cần xác định defaultColor:

UIColor* defaultColor; sau đó trong viewDidLoad đặt của bạn hoặc bất cứ nơi nào xem được khởi tạo:

defaultColor = [button titleColorForState: UIControlStateNormal]; 

Sau đó, bạn có defaultColor như màu tiêu đề mặc định.

0

Thêm đoạn mã sau vào cellForRowAtIndexPath đại biểu ......

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

cell.button.tag=indexPath.row+100; 

[cell.button addTarget:self selector:@selector(changeButtonTitle:) forControlEvents:UIcontrolTouchUpEventInside]; 

sau đó trong hành động nút thêm đoạn mã sau

-(void)changeButtonTitle:(UIButton *)button 
{ 
    UITableViewCell *cell=(UITableViewCell *)button.superview.superview; 
    NSIndexpath *indexpath=[self.yourtableview indexPathForCell:cell]; 
    UIButton *tempButton=(UIButton *)[cell viewWithtag:indexPath.row+100]; 
    [tempButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 
} 
9

Tôi giả sử bạn có nghĩa là bạn muốn thiết lập các văn bản trở lại đến số tintColor. Nếu bạn chỉ muốn tintColor hiện tại, bạn có thể làm:

[button setTitleColor:button.tintColor forState:UIControlStateNormal]; 

Tuy nhiên, tintColor được cho là sẽ tự động thay đổi trong một số trường hợp nhất định, chẳng hạn như khi cảnh báo bật lên. Để đạt được điều đó, tôi nghĩ rằng bạn cần phải xác định nút riêng của bạn:

@interface MyButton : UIButton 
@end 

@implementation MyButton 

- (void) tintColorDidChange 
{ 
    [self setTitleColor:self.tintColor forState:UIControlStateNormal]; 
    [super tintColorDidChange]; 
} 

@end 

Trong trường hợp đó, tôi đề nghị bạn sử dụng tình trạng chọn cho bạn màu sắc đặc biệt:

[button setTitleColor:[UIColor redColor] forState:UIControlStateSelected]; 

và thiết lập button.selected = YES khi "một cái gì đó là trên", như bạn nói.

11

Đặt màu thành 0 và hành vi của nó sẽ trở về trạng thái trước khi bạn thay đổi, bao gồm phản hồi đúng cách với cảnh báo.

[myButton setTitleColor:nil forState:UIControlStateNormal]; 
5
button.tintColor = nil 

hoặc

[button setTintColor: null] 

Trong iOS v7.0, tất cả các lớp con của UIView lấy được hành vi của họ cho tintColor từ lớp cơ sở. Xem phần thảo luận về tintColor ở cấp độ UIView để biết thêm thông tin.

Thuộc tính này không có hiệu ứng mặc định cho các nút có loại UIButtonTypeCustom. Đối với các nút tùy chỉnh, bạn phải thực hiện bất kỳ hành vi nào liên quan đến tintColor.

cài đặt Màu của UIButtonColor to nil (null) sẽ đặt lại màu của tiêu đề

Các vấn đề liên quan