web-dev-qa-db-ja.com

SwiftでUILabelのテキストの色を設定する方法

コードを使用してUILabelの色を別のUILabelの色に設定しようとすると

myLabel.textColor = otherLabel.textColor

色は変わりません。ただし、このコードを使用すると、

myLabel.textColor = UIColor.redColor()

色が正しく変更されます。最初の行の問題は何ですか?

54
kag359six

最も簡単な回避策は、IBでダミーラベルを作成し、テキストに好きな色を付けて非表示に設定することです。その後、コードでこの色を参照して、ラベルを目的の色に設定できます。

yourLabel.textColor = hiddenLabel.textColor

プログラムでテキストの色を変更できる唯一の方法は、標準色UIColor.whiteUIColor.greenを使用することでした...

42
Piet Grootnoten

次のこのコード例は、基本的な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)
38
Mayank Patel

理由はわかりませんが、ラベルのテキストの色を変更するには、必要な値を255で除算する必要があります。これは、1.0までしか機能しないためです。

たとえば、濃い青色:

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

IBと次の2つのラベルを使用してアプリを作成しました。

@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の色が予想どおりに変更されたため、ラインが機能します。 myLabel.textColorを設定する直前にprintln(otherLabel.textColor)を試して、色が期待どおりかどうかを確認してください。

6
terrafirma9

Swift 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
4
Himanshu

Xcode 8とSwiftを使用している場合3.次の方法でUIColorを取得します

label1.textColor = UIColor.red
label2.textColor = UIColor.black
3
Asfand Shabbir

私はほとんどの人が自分のプレースホルダーテキストを灰色で一度だけ表示したいと思うので、これは私がやったことです:

  1. 色をviewDidLoad()に設定します(IBではありません)

    commentsTextView.textColor = UIColor.darkGray
    
  2. コントローラにUITextViewDelegateを実装します

  3. コントローラーに機能を追加する

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

この解決策は簡単です。

2
Frank

テキストフィールドのプレースホルダーと "is really"ラベルは、夜間には見にくいです。だから私はそれが何時かによって色を変えます。

また、新しいIBOutlet isReallyLabelを必ず接続してください。これを行うには、Main.storybaordを開き、「Convert」View Controllerから「is really」テキストフィールドにcontrolを押しながらドラッグして、Outletsの下のisReallyLabelを選択します。

警告:時刻が入れ替わる間、アプリケーションが開いているかどうかを確認するテストは行っていません。

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

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

実行時にUILableのテキストの色を変更するには、NSAttributedTextを使用し、UILable.textColorを設定しないでください。

let font = UIFont(name: "SFProText-Semibold", size: 16)!
if let messageToDisplay = currentUser?.lastMessage {

    let attributedString = NSAttributedString(string: messageToDisplay, attributes: [NSAttributedString.Key.font: font, NSAttributedString.Key.foregroundColor: UIColor(named: "charcoal")!])
    lastMessageLabel.attributedText = attributedString
} else {
    let attributedString = NSAttributedString(string: "Start a conversation", attributes: [NSAttributedString.Key.font: font, NSAttributedString.Key.foregroundColor: UIColor(named: "ocean")!])
    lastMessageLabel.attributedText = attributedString
}

charcoalおよびoceanは、 Assets.xcassets。結果のラベル画像:

Resultant Label Images

上記のコードは、Xcode 10.2.1およびSwift 5でうまく機能しました。

0
Pankaj Kulkarni