UFO ET IT

Swift에서 UILabel의 textColor를 설정하는 방법

ufoet 2020. 12. 3. 21:10
반응형

Swift에서 UILabel의 textColor를 설정하는 방법


코드를 사용하여 UILabel의 색상을 다른 UILabel의 색상으로 설정하려고 할 때

myLabel.textColor = otherLabel.textColor

색상을 변경하지 않습니다. 그러나이 코드를 사용하면

myLabel.textColor = UIColor.redColor()

색상이 올바르게 변경됩니다. 첫 번째 줄의 문제는 무엇입니까?


가장 쉬운 해결 방법은 IB에서 더미 레이블을 만들고 원하는 색상을 지정하고 숨김으로 설정하는 것입니다. 그런 다음 코드에서이 색상을 참조하여 레이블을 원하는 색상으로 설정할 수 있습니다.

yourLabel.textColor = hiddenLabel.textColor

프로그래밍 방식으로 텍스트 색상을 변경할 수있는 유일한 방법은 표준 색상 UIColor.white, UIColor.green...


다음 코드 예제는 기본 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)

이유는 모르겠지만 라벨의 텍스트 색상을 변경하려면 1.0까지만 작동하기 때문에 원하는 값을 255로 나누어야합니다.

예를 들어 진한 파란색 :

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

IB에서 두 개의 레이블과 다음과 같은 앱을 만들었습니다.

@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 색상이 예상대로 변경되었으므로 선이 작동합니다. 시도 println(otherLabel.textColor)는 색상이 예상 무엇 있는지 myLabel.textColor를 설정 직전.


신속한 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

Xcode 8 및 swift 3을 사용하는 경우 다음 방법을 사용하여 UIColor를 가져옵니다.

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

대부분의 사람들은 자리 표시 자 텍스트가 회색이고 한 번만 표시되기를 원하므로 다음과 같이했습니다.

  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
        }
    }
    

이 솔루션은 간단합니다.


텍스트 필드 자리 표시 자와 "정말"레이블은 밤에보기 어렵습니다. 그래서 나는 하루 중 몇시에 색깔을 바꾼다.

또한 새 IBOutlet isReallyLabel을 연결했는지 확인하십시오. 그렇게하려면 Main.storybaord를 열고 "변환"뷰 컨트롤러에서 "정말"텍스트 필드로 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
	}
}


런타임에 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
}

참고 바다 Assets.xcassets에 정의 된 색상입니다. 결과 라벨 이미지 :

Resultant Label Images

위의 코드는 Xcode 10.2.1 및 Swift 5에서 잘 작동했습니다.


아래와 같이 사용하실 수 있으며 할당 만하면 다양한 색상을 사용할 수 있습니다.

myLabel.textColor = UIColor.yourChoiceOfColor

전의:

myLabel.textColor = UIColor.red

또는 여기클릭 하여 색상을 선택할 수 있습니다 .

https://www.ralfebert.de/ios-examples/uikit/swift-uicolor-picker/

참고URL : https://stackoverflow.com/questions/25837228/how-to-set-textcolor-of-uilabel-in-swift

반응형