İOS'ta imlecin / işaretin rengini değiştirmeyi merak ediyorum UITextField
(Ve UITextView
aynı cevap ise). OSX geliştirme için cevaplar gördüm, ancak iOS için hiçbir şey yok.
Bu mümkün mü?
İOS'ta imlecin / işaretin rengini değiştirmeyi merak ediyorum UITextField
(Ve UITextView
aynı cevap ise). OSX geliştirme için cevaplar gördüm, ancak iOS için hiçbir şey yok.
Bu mümkün mü?
Yanıtlar:
İOS 7+'yı hedefliyorsanız, bu çok daha kolay hale getirildi. Sadece tintColor
görünüm proxy'sini kullanarak bir imleç ile alanı değiştirin ve uygulama boyunca geçerli olacaktır:
Swift 3.0:
UITextField.appearance().tintColor = .black
Objective-C:
[[UITextField appearance] setTintColor:[UIColor blackColor]];
Bir kişi için aynı cevap geçerlidir UITextField
:
Swift 3.0:
myTextField.tintColor = .black
Objective-C
[myTextField setTintColor:[UIColor blackColor]];
Hızlı 3:
UITextField.appearance().tintColor = UIColor.black
UITextView.appearance().tintColor = UIColor.black
Not: Bu yanıt güncel değil ve yalnızca iOS 7 öncesi geliştirme için kullanılmalıdır. İOS 7'de 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 vardım.
Mevcut Özel API'ları kullanmadığı için AppStore inceleme ekibi tarafından kabul edilecek bir çözüm oluşturmayı başardım.
UITextField genişleten DGTextField adlı bir denetim oluşturduk.
yourTextField.tintColor = [UIColor whiteColor];
Kodda ayarlarsanız çalışır, çünkü çünkü renk tetikleyici bir şekilde Arayüz Oluşturucu'da (Xcode 6.1.1) yapmaz . Herhangi bir görünüm proxy'sini değiştirmeye gerek kalmadan uygundur.
Ayar tintColor
için UITextField
ve UITextView
farklı çalışır. Iken, imleç rengini değiştirmek için UITextField
güncelledikten sonra ek kod çağırmanız gerekmez tintColor
, ancak UITextView
sizin için gerekir.
Yani ayarladıktan sonra tintColor
için UITextView
(o kod IB içi veya önemli değil) aramak gerekir textView.tintColorDidChange()
bunu uygulamak için (aslında onun subviews hiyerarşiye aşağı metin görünümün yapılandırma geçecek).
Bu benim için hızlı çalıştı:
UITextField.tintColor = UIColor.blackColor()
Bunu film şeridinde de ayarlayabilirsiniz: https://stackoverflow.com/a/18759577/3075340
Instance member 'tintcolor' cannot be used on type 'UITextField'
Daha genel bir yaklaşım, UIView'in görünümünün renk tonunu ayarlamak olacaktır.
UIColor *myColor = [UIColor purpleColor];
[[UIView appearance] setTintColor:myColor];
Birçok varsayılan kullanıcı arayüzü öğesi kullanıyorsanız mantıklıdır.
[UIView appearance]
Yalnızca özel bir mülke erişerek mümkündür ve bu nedenle Apple AppStore uygulamasının reddedilmesine neden olabilir.
Durgesh'in yaklaşımı işe yarıyor.
Ayrıca bu tür KVC çözümlerini birçok kez kullandım. Rağmen belgelenmemiş gibi görünüyor, ama işe yarıyor. Açıkçası, burada herhangi bir özel yöntem kullanmıyorsunuz - yalnızca yasal olan Anahtar / Değer Kodlaması.
PS Dün yeni uygulamam AppStore'da bu yaklaşımla ilgili herhangi bir sorun yaşamadı. Ve bazı salt okunur özellikleri (navigatonBar gibi) veya özel ivarları değiştirirken KVC'yi kullandığımda ilk durum bu değil.
Swift ile Arayüz Oluşturucu sürümü için
@IBOutlet weak var tvValue: UITextView! {
didSet {
tvValue.tintColor = .black
}
}
Eğer ise UITextField
, UISearchBar
önce textField
gelen searchBar
ve sonra tintColor
özelliği uygulayın :
let textFieldInsideSearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideSearchBar?.tintColor = UIColor.lightGray
Bazı özel renkler istiyorsanız, Assets.xcassets
klasöre gidebilir , sağ tıklayıp seçebilir New Color Set
, ayarladığınız rengi oluşturduktan sonra, yeniden kullanmak için bir ad verin.
Ve bunu şöyle kullanabilirsiniz:
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 üzerinde test edildi
UITextField
Arayüz Oluşturucu'da bunun nasıl yapılacağı da dahil olmak üzere ayrıntılı yanıt için stackoverflow.com/a/18759577/1709587