programing

UITextField 및 UITextView 커서/캐럿 색상 변경

muds 2023. 4. 16. 15:59
반응형

UITextField 및 UITextView 커서/캐럿 색상 변경

을 서/캐/캐로 .UITextField (그리)UITextViewiOS를 사용하다OSX 개발에 대한 해답은 봤지만 iOS에 대한 해답은 없습니다.

이게 가능하기나 해?

iOS 7+를 타겟으로 하고 있는 경우는, 한층 더 간단하게 할 수 있습니다. '만나면 돼요.tintColor커서가 있는 필드의 경우 앱 전체에 적용됩니다.

Swift 3.0:

UITextField.appearance().tintColor = .black 

목표-C:

[[UITextField appearance] setTintColor:[UIColor blackColor]];

됩니다.UITextField:

Swift 3.0:

myTextField.tintColor = .black 

목표-C

[myTextField setTintColor:[UIColor blackColor]];

iOS7에서는 텍스트 필드의 tintColor를 간단하게 변경할 수 있습니다.

스위프트 3:

  UITextField.appearance().tintColor = UIColor.black
  UITextView.appearance().tintColor = UIColor.black
yourTextField.tintColor = [UIColor whiteColor];

코드로 설정하면 동작합니다.왜냐하면, Interface Builder(Xcode 6.1.1)에서는, 칼라 트리거가 동작하지 않기 때문입니다.어피아란스 프록시를 변경할 필요 없이 잘 어울렸습니다.

주의: 이 답변은 최신이 아니므로 iOS 7 이전 개발에만 사용해야 합니다.iOS 7의 외관 프록시를 사용한 한 줄짜리 솔루션에 대한 다른 답변을 참조하십시오.

제가 이 질문을 하게 된 것은 제가 진행하던 프로젝트에서 같은 문제에 직면했기 때문입니다.

AppStore 리뷰팀은 기존 Private API를 사용하지 않기 때문에 수용 가능한 솔루션을 만들 수 있었습니다.

UITextField를 확장하는 DGTextField라는 컨트롤을 만들었습니다.

★★tintColor★★★★★★에UITextField ★★★★★★★★★★★★★★★★★」UITextView하다★★★★★★★★★★★★★★★의 경우UITextField 후 를 호출하지 됩니다.tintColor 색을 UITextView필요하죠.

★★★을 한 후tintColor★★★★★★에UITextView코드에 (IB)로.textView.tintColorDidChange()(실제로 텍스트뷰의 설정을 서브뷰 계층에 전달합니다)

이것은 나에게 빠르게 작용했다.

UITextField.tintColor = UIColor.blackColor()

스토리보드에서도 설정할 수 있습니다.https://stackoverflow.com/a/18759577/3075340

보다 일반적인 접근법은 UIView의 어피아란스의 tintColor를 설정하는 것입니다.

UIColor *myColor = [UIColor purpleColor];
[[UIView appearance] setTintColor:myColor];

기본 UI 요소를 많이 사용하는 경우 유용합니다.

해봐, 나한테는 효과가 있어.

[[self.textField valueForKey:@"textInputTraits"] setValue:[UIColor redColor] strong textforKey:@"insertionPointColor"];

개인 자산에 액세스해야만 가능하므로 Apple AppStore 앱 거부가 발생할 수 있습니다.

이 Stackoverflow 질문을 참조하십시오.

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★Assets.xcassets후 [ ], [ ]를 선택합니다.New Color Set설정한 색상을 작성한 후 재사용할 이름을 지정합니다.

다음과 같이 사용할 수 있습니다.

import UIKit 

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        UITextField.appearance().tintColor = UIColor(named: "YOUR-COLOR-NAME")  #here
    }
}

MacOS 10.15/iOS 13/Swift 5에서 테스트 완료

Durgesh의 접근법은 효과가 있다.

저도 그런 KVC 솔루션을 여러 번 사용했습니다.문서화되어 있지 않은 것 같지만, 효과가 있습니다.솔직히 여기서는 개인 방법을 사용하지 않습니다. 합법적인 키-값 코딩만 사용합니다.

추신: 어제 앱스토어에 새로운 앱이 등장했습니다.KVC를 사용하여 일부 읽기 전용 속성(navigatonBar 등)이나 개인 ivar를 변경하는 것은 이번이 처음은 아닙니다.

Swift를 사용하는 Interface Builder 버전의 경우

@IBOutlet weak var tvValue: UITextView! {
        didSet {
            tvValue.tintColor = .black
        }
    }

이 경우,UITextField에서 왔다UISearchBar그럼 일단은textField부터searchBar그리고 나서 신청합니다.tintColor속성:

let textFieldInsideSearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.tintColor = UIColor.lightGray

스위프트 4

viewDidLoad()에서는 아래 코드를 호출합니다.

코드 샘플

//txtVComplaint is a textView

txtVComplaint.tintColor = UIColor.white

txtVComplaint.tintColorDidChange()

Swift에서 동등한 것을 검색하시는 분들을 위해UI:Textfield이것은accentColor:

TextField("Label", text: $self.textToBind).accentColor(Color.red)

언급URL : https://stackoverflow.com/questions/11606007/change-uitextfield-and-uitextview-cursor-caret-color

반응형