web-dev-qa-db-ja.com

UIColorがRGBA値を処理しない

次のコード(RGBA値)を使用してUITextFieldのテキストの色を変更しようとしていますが、単に白く表示されるか、クリアになっています。背景自体が白なので、確信が持てません。

passwordTextField.textColor = UIColor(red: CGFloat(202.0), green: CGFloat(228.0), blue: CGFloat(230.0), alpha: CGFloat(100.0))

passwordTextField.returnKeyType = UIReturnKeyType.Done
passwordTextField.placeholder = "Password"
passwordTextField.backgroundColor = UIColor.clearColor()
passwordTextField.borderStyle = UITextBorderStyle.RoundedRect
passwordTextField.font = UIFont(name: "Avenir Next", size: 14)
passwordTextField.textAlignment = NSTextAlignment.Center
passwordTextField.secureTextEntry = true
25
Stephen Fox

UIColorのRGB値は0から1の間です( ドキュメント "0.0から1.0の値として指定"を参照)

数値を255で割る必要があります。

passwordTextField.textColor = UIColor(red: CGFloat(202.0/255.0), green: CGFloat(228.0/255.0), blue: CGFloat(230.0/255.0), alpha: CGFloat(1.0))

もう1つ、CGFloatを作成する必要はありません。

passwordTextField.textColor = UIColor(red:202.0/255.0, green:228.0/255.0, blue:230.0/255.0, alpha:1.0)
67
bjtitus

便利なinitを使用する(プロのようなコード)

ステップ1

extension UIColor {
    convenience init(r: CGFloat, g: CGFloat, b: CGFloat) {
        self.init(red: r/255, green: g/255, blue: b/255, alpha: 1)
    }
}

使用法

//let color = UIColor(red: 202/255, green: 228/255, blue: 230/255, alpha: 1) ☠️
let color = UIColor(r: 202, g: 228, b: 230) // ????
5
Alwin

代わりにこれを試してください:

passwordTextField.textColor = UIColor(red: 0.792, green: 0.894, blue: 0.901, alpha: 1.0

常に代替値を入れてください。 202/255 = 0.792

3
shahil

赤、緑、青、アルファは0.0から1.0の間であると想定されています。

2
Steven Fisher

他の人が述べたように、UIColorコンポーネントは0.0〜1.0の範囲で正規化されます(広い色域は例外だと思いますが、まだ調査していません)。

UIColorクラスの便利なextensionを使用すると、0〜255の範囲の値を使用できます(さまざまなインスペクターや画像編集ツールから取得したものと同様)。

import UIKit

extension UIColor {

    convenience init(
        redByte   red:UInt8,
        greenByte green:UInt8,
        blueByte  blue:UInt8,
        alphaByte alpha:UInt8
        ) {
        self.init(
            red:   CGFloat(red  )/255.0,
            green: CGFloat(green)/255.0,
            blue:  CGFloat(blue )/255.0,
            alpha: CGFloat(alpha)/255.0
        )
    }
}
1
Nicolas Miari

整数または16進数からのUIColorの便利なメソッド。

extension UIColor {


    convenience init(red: Int, green: Int, blue: Int, alpha: CGFloat) {
        assert(red >= 0 && red <= 255, "Invalid red component")
        assert(green >= 0 && green <= 255, "Invalid green component")
        assert(blue >= 0 && blue <= 255, "Invalid blue component")

        self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: alpha)
    }



    convenience init(rgb: Int, alpha: CGFloat = 1) {
        self.init(
            red: (rgb >> 16) & 0xFF,
            green: (rgb >> 8) & 0xFF,
            blue: rgb & 0xFF,
            alpha: alpha
        )
    }
}
0
dengST30