2012-01-09 8 views
22

Tôi đang tìm một giải pháp cho vấn đề này KHÔNG yêu cầu sử dụng hình ảnh/PNG. Tôi đang tìm một cách để loại bỏ màu nền màu xanh của UIButton khi nó ở trạng thái được chọn, và tôi không thể tìm thấy cách để làm điều đó mà không sử dụng hình ảnh. Tôi về cơ bản cố gắng để làm một cái gì đó giống như là trong trường hợp của một UITableViewCell:Làm thế nào để loại bỏ màu nền UIButton đã chọn?

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

Trả lời

13

Đáng tiếc là tôi đang đi từ máy tính thử nghiệm của tôi vào lúc này, nhưng có hai những điều bạn có thể thử.

đầu tiên sẽ được thiết lập thuộc tính sau:

button.adjustsImageWhenHighlighted = NO; 

Hoặc bỏ chọn "Highlight điều chỉnh hình ảnh" trong giao diện Builder.

Nếu điều đó không làm việc như bạn mong đợi nó, bạn có thể bỏ chọn nút trong hành động mà bạn gắn nó vào, như vậy:

- (IBAction)yourButtonAction:(id)sender { 
    [sender setHighlighted:NO]; 
} 
+0

hiện nó nhưng không theo cách sạch sẽ - khi tôi nhấp, bạn vẫn thấy màu xanh lam trong một thời gian ngắn. Tôi hy vọng sẽ tìm ra một giải pháp sẽ loại bỏ hoàn toàn. – TommyG

+0

Vậy tại sao bạn không tự tạo ra 'UIControl' của riêng mình? Nó không phải là khó. Sau đó, bạn có thể tùy chỉnh nó cho nội dung trái tim của bạn. –

+0

Vẫn hoạt động tốt, ios: 9.3, chỉ cần 'button.adjustsImageWhenHighlighted = NO' là đủ. –

-2

Sử dụng ...

[myButton setAdjustsImageWhenHighlighted:FALSE]; 
+0

không hoạt động .... – TommyG

-2

Không chắc nếu điều này là cách tốt nhất. Nhưng bạn có thể có một nút vô hình hoặc xem ontop của nút thực tế sau đó nhận ra khi nút trên cùng/xem đã được nhấp vào.

8

Thay đổi alpha của tintColor bằng không, hoạt động nếu iOS là 5.0 trở lên

UIColor *color = [[UIColor alloc] initWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]; 
button.tintColor = color; 
+3

Điều này làm cho văn bản nút nhấp nháy – Nektarios

+0

Tăng mức sử dụng CPU để pha trộn – Zorayr

+0

hoặc chỉ 'button.tintColor = [UIColor clearColor];' –

93

Tôi có vấn đề này cùng và tôi giải quyết nó bằng cách thay đổi kiểu UIButton từ "hệ thống" để "Custom". Màu nền màu xanh không hiển thị ở trạng thái đã chọn khi đó là loại "Tùy chỉnh".

+5

Đơn giản, nhưng nó sẽ loại bỏ mờ nhạt khi chạm. :( –

+5

Đây phải là câu trả lời được chấp nhận – Olie

+1

@KyleClegg chỉ cần thay đổi Màu được đánh dấu và nó sẽ mờ dần thành màu đó khi chạm. – xissburg

0

Swift Version

extension UIButton { 
    override public var highlighted: Bool { 
     didSet { 
      // clear background color when selected 
      self.layer.backgroundColor = .None 
     } 
    } 
} 
0

gì đã làm nó đối với tôi là thay đổi button.tintColor ở bang nhấn mạnh.Đây là nhanh chóng 3, iOS 10

override public var isHighlighted: Bool { 
    didSet { 
     self.tintColor = UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 1.0) 
    } 
} 

Hoặc bạn có thể làm điều tương tự trong xây dựng giao diện

Choose button state

Choose button tint color

1

UIButton cũng với custom loại, chúng ta có thể thiết lập nó trong xcode as-

enter image description here

HOẶC Bằng cách lập trình như-

let customButton = UIButton(type: .custom) 
    customButton.setTitle("this is Button", for: .normal) 
    customButton.setTitleColor(UIColor.blue, for: .normal) 
    customButton.frame = CGRect(x: 15, y: 50, width: 300, height: 500) 
      self.view.addSubview(customButton) 

Bây giờ có màu nền màu xanh không còn nữa UIButton của

0

Rất đơn giản trong "thanh tra thuộc tính" của UIButton di chuyển xuống " xem "phần và ngay bên dưới" Nền "tìm kiếm " Màu " và đặt thành " màu rõ ràng " hoặc bất kỳ màu nào cụ thể nếu bạn muốn màu đó. Snapshot of settings