web-gelistirme-sc.com

UITextField ve UITextView İmleç/Çizgi Rengini Değiştirme

İOS'ta bir UITextField (Ve eğer aynı cevabı ise UITextView) imlecinin/bere rengini değiştirmeyi merak ediyorum. OSX geliştirme için cevaplar gördüm, ancak iOS için hiçbir şey görmedim.

Bu mümkün mü?

194
RileyE

İOS 7+ ürününü hedefliyorsanız, bu çok daha kolay hale getirildi. Görünüm vekilini kullanarak basitçe alanın renk tonunu imleçle değiştirin; uygulama boyunca geçerli olacaktır:

Swift 3.0:

UITextField.appearance().tintColor = .black 

Objective-C:

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

Aynı cevap, ayrı bir UITextView için de geçerlidir:

Swift 3.0:

myTextField.tintColor = .black 

Objective-C

[myTextField setTintColor:[UIColor blackColor]];
461
DiscDev

İOS7 ile textField öğesinin tintColor değerini değiştirebilirsiniz

43
Cap

Swift 3:

  UITextField.appearance().tintColor = UIColor.black
  UITextView.appearance().tintColor = UIColor.black
17
Peter Kreinz

Not: Bu cevap güncel değil ve sadece iOS 7 öncesi gelişim için kullanılmalı. İOS 7'deki görünüm proxy'sini kullanarak 1 satırlık bir çözüm için diğer yanıtlara bakın.

Üzerinde çalıştığım bir projede aynı problemle karşılaştıktan sonra bu soruya geldim.

AppStore inceleme ekibi tarafından mevcut Özel API'leri kullanmadığı için kabul edilecek bir çözüm oluşturmayı başardım.

UITextField öğesini genişleten DGTextField adlı bir kontrol oluşturdum.

13
Dov
yourTextField.tintColor = [UIColor whiteColor];

Kodunu ayarlarsanız çalışır, çünkü bir şekilde color trigger, Interface Builder (Xcode 6.1.1) içinde yapmaz. Herhangi bir görünüm proxy'sini değiştirmeye gerek kalmadan çok uygundur.

11
David

tintColor ve UITextField için UITextView öğesinin ayarlanması farklı şekilde çalışır .. UITextField için imleç rengini değiştirmek için tintColor güncelledikten sonra ek kod çağırmanız gerekmez, ancak UITextView için ihtiyacınız vardır.

Bu yüzden tintColor için UITextView ayarını yaptıktan sonra (IB'de veya kodda önemli değil) uygulamak için textView.tintColorDidChange() öğesini çağırmanız gerekir (aslında metin görünümünün config alt görünümleri hiyerarşisine geçecek).

5
ilya

Bu Swift benim için çalıştı:

UITextField.tintColor = UIColor.blackColor()

Bunu film şeridinde de ayarlayabilirsiniz: https://stackoverflow.com/a/18759577/3075340

4
Micro

UIView'un görünümünün renk tonunu ayarlamak için daha genel bir yaklaşım olacaktır.

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

Birçok varsayılan UI öğesi kullanıyorsanız, bir anlam ifade eder.

3
arnekolja

Yalnızca özel bir mülke erişerek mümkündür ve bu nedenle Apple AppStore uygulamasının reddine neden olabilir.

Bu Stackoverflow sorusuna bir göz atın

1
Max Ballo

Dene, Benim için çalışıyor.

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

Swift 4

ViewDidLoad () işlevinde sadece aşağıdaki kodu arayın:

KOD NUMUNE

//txtVComplaint is a textView

txtVComplaint.tintColor = UIColor.white

txtVComplaint.tintColorDidChange()
0
Md Shamshad Akhtar

Durgesh'in yaklaşımı işe yarıyor.

Ayrıca birçok kez bu tür KVC çözümlerini de kullandım .. • Belgelenmemiş gibi görünse de işe yarıyor. Açıkçası, burada herhangi bir Özel yöntem kullanmıyorsunuz - sadece yasal olan Anahtar Değer Kodlama.

Not; Dün yeni uygulamam AppStore'da bu yaklaşımla herhangi bir sorun olmadan ortaya çıktı. Ve bazı salt okunur özellikleri (navigatonBar gibi) veya özel ivarları değiştirmek için KVC kullandığımda ilk durum bu değil.

0
malex

Bazı özel renkler istiyorsanız, Assets.xcassets klasörüne gidebilirsiniz, sağ tıklayın ve New Color Set seçeneğini seçin, ayarladığınız rengi oluşturduktan sonra yeniden kullanması için bir ad verin.

Ve bunu şu şekilde kullanabilirsiniz:

import UIKit 

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

MacOS'ta test edildi 10.15/iOS 13/Swift 5

0
rust

Swift ile Arayüz Oluşturucu sürümü için

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

UITextFieldUISearchBar'dan ise, o zaman textField'dan searchBar öğesini edinin ve ardından tintColor özelliğini uygulayın:

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