2014-09-14 24 views
43

Khi tôi cố gắng thiết lập màu sắc của một UILabel để màu sắc của một UILabel sử dụng mãLàm thế nào để thiết lập Format của UILabel trong Swift

myLabel.textColor = otherLabel.textColor 

Nó không thay đổi màu sắc. Tuy nhiên, khi tôi sử dụng mã này,

myLabel.textColor = UIColor.redColor() 

Nó thay đổi màu sắc chính xác. Vấn đề với dòng đầu tiên là gì?

+4

Không có vấn đề gì với dòng đầu tiên. otherLabel.textColor không phải là những gì bạn nghĩ rằng nó là vào thời điểm này trong thực hiện ứng dụng của bạn. –

+1

Xin chào, bài đăng này hữu ích cho tôi, đặc biệt là câu trả lời của @Mayank Patel. Nếu bất kỳ câu trả lời nào trong số này phù hợp với bạn, bạn có thể chọn một câu trả lời để tìm ra tùy chọn tốt nhất nhanh hơn cho người khác. Cảm ơn! –

Trả lời

22

Cách giải quyết dễ nhất là tạo nhãn giả trong IB, cung cấp cho họ văn bản màu bạn thích và đặt thành ẩn. Sau đó, bạn có thể tham chiếu màu này trong mã của bạn để đặt nhãn của bạn thành màu mong muốn.

yourLabel.textColor = hiddenLabel.textColor 

Cách duy nhất tôi có thể thay đổi màu sắc văn bản lập trình là bằng cách sử dụng các màu tiêu chuẩn, UIColor.white, UIColor.green ...

+0

Bạn sẽ có thể tạo các màu tùy chỉnh: [UIColor] (https://developer.apple.com/documentation/uikit/uicolor/1621925-init) –

6

Made một ứng dụng với hai nhãn trong IB và sau đây:

@IBOutlet var label1: UILabel! 
@IBOutlet var label2: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    label1.textColor = UIColor.redColor() // in Swift 3 it's UIColor.red 
    label2.textColor = label1.textColor 
} 

LABEL2 màu thay đổi như mong đợi, vì vậy các công trình đường dây của bạn. Hãy thử println(otherLabel.textColor) ngay trước khi bạn đặt myLabel.textColor để xem màu của bạn có là màu gì không.

36

Ví dụ mã sau đây hiển thị cấu hình cơ bản UILabel.

let lbl = UILabel(frame: CGRectMake(0, 0, 300, 200)) 
lbl.text = "yourString" 

// Enum type, two variations: 
lbl.textAlignment = NSTextAlignment.Right 
lbl.textAlignment = .Right 

lbl.textColor = UIColor.red 
lbl.shadowColor = UIColor.black 
lbl.font = UIFont(name: "HelveticaNeue", size: CGFloat(22)) 
self.view.addSubview(lbl) 
19

Tôi không biết tại sao nhưng để thay đổi màu sắc văn bản của các nhãn bạn cần chia giá trị bạn muốn với 255, bởi vì nó chỉ hoạt động cho đến 1.0.

Ví dụ một màu xanh đậm:

label.textColor = UIColor(red: 0.0, green: 0.004, blue: 0.502, alpha: 1.0) 
1

Tôi nghĩ rằng hầu hết mọi người muốn văn bản giữ chỗ của họ là màu xám và chỉ xuất hiện một lần, vì vậy đây là những gì tôi đã làm:

  1. Set màu của bạn trong viewDidLoad() (không phải trong IB)

    commentsTextView.textColor = UIColor.darkGray 
    
  2. Thực hiện UITextViewDelegate để điều khiển của bạn

  3. add chức năng để điều khiển của bạn

    func textViewDidBeginEditing(_ textView: UITextView) { 
        if (commentsTextView.textColor == UIColor.darkGray) { 
         commentsTextView.text = "" 
         commentsTextView.textColor = UIColor.black 
        } 
    } 
    

Giải pháp này rất đơn giản.

0

Trình giữ chỗ trường văn bản và nhãn "thực sự" rất khó nhìn thấy vào ban đêm. Vì vậy, tôi thay đổi màu sắc của họ tùy thuộc vào một trong những gì thời gian trong ngày nó được.

Cũng đảm bảo bạn kết nối IBOutlet mới làReallyLabel. Để làm như vậy, hãy mở Main.storybaord và điều khiển-kéo từ bộ điều khiển xem "Chuyển đổi" sang trường văn bản "thực sự" và chọn isReallyLabel trong các Cửa sổ.

CẢNH BÁO: Tôi chưa kiểm tra xem ứng dụng có đang mở hay không trong khi thời gian trong ngày hoán đổi.

@IBOutlet var isReallyLabel: UILabel! \t 
 
    
 
override func viewWillAppear(animated: Bool) { 
 
\t let calendar = NSCalendar.currentCalendar() 
 
\t let hour = calendar.component(.Hour, fromDate: NSDate()) 
 
\t \t 
 
\t let lightColor = UIColor.init(red: 0.961, green: 0.957, blue: 0945, alpha: 1) 
 
\t let darkColor = UIColor.init(red: 0.184, green: 0.184 \t , blue: 0.188, alpha: 1) 
 

 
\t \t 
 
\t switch hour { 
 
\t case 8...18: 
 
\t \t isReallyLabel.textColor = UIColor.blackColor() 
 
\t \t view.backgroundColor = lightColor 
 
\t default: 
 
\t \t let string = NSAttributedString(string: "Value", attributes: [NSForegroundColorAttributeName: UIColor.whiteColor()]) 
 
\t \t textField.attributedPlaceholder = string 
 
\t \t isReallyLabel.textColor = UIColor.whiteColor() 
 
\t \t view.backgroundColor = darkColor 
 
\t } 
 
}

3

Nếu bạn đang sử dụng Xcode 8 và nhanh chóng 3. Sử dụng cách sau để có được những UIColor

label1.textColor = UIColor.red 
label2.textColor = UIColor.black 
1

giải pháp cho nhanh 3 -

let titleLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 40, height: 40)) 
titleLabel.text = "change to red color" 
titleLabel.textAlignment = .center 
titleLabel.textColor = UIColor.red 
Các vấn đề liên quan