2016-12-21 54 views
-1

我想更改我的UITextField s和我的UITextView文字顏色,但我不能。我收到錯誤:Cannot assign to immutable expression of type 'UIColor!!'。我得到的另一個錯誤是,當試圖改變填充lineFragmentPadding應用程序崩潰。 ):無法分配給'UIColor !!'類型的不可變表達式。

我的代碼:

override func viewDidLoad() { 
     super.viewDidLoad() 

[nameTxt, emailTxt, cityTxt, messageTxt].forEach { 
      ($0 as AnyObject).layer.borderWidth = 0.5; // works fine 
      ($0 as AnyObject).layer.cornerRadius = 6; // works fine 
      ($0 as AnyObject).layer.borderColor = UIColor(white: 0.2, alpha: 0.25).cgColor // works fine 
      ($0 as AnyObject).textColor = UIColor(white: 1, alpha: 0.25).cgColor // error here 
      ($0 as AnyObject).textContainer.lineFragmentPadding = 0 // Makes app crash 

     } 

} 

爲什麼,以及如何解決?

我和斯威夫特3和Xcode的8.2(8C38)

+0

'nameTxt,emailTxt,cityTxt,messageTxt'是如何聲明的? –

+3

我不相信textColor需要CGColor。你有沒有嘗試簡單地使用'UIColor(白色:1,alpha:0.25)'?另外,什麼是崩潰? – Samantha

+2

由於數組的類型顯然是'[UITextField]'??因此,爲什麼要將(無效5次!)投到非常不明確的'AnyObject'上? – vadian

回答

1

我不相信文字顏色需要CGColor工作。您是否嘗試過使用UIColor(white: 1, alpha: 0.25)

至於崩潰:我猜(沒有看到任何堆棧的痕跡)它發生,因爲UITextField沒有一個屬性textContainer。我會在調用該行之前檢查該對象的類型。

if let textView = $0 as? UITextView { 
    textView.textContainer.lineFragmentPadding = 0 
} 
+0

謝謝,但我仍然無法更改視圖的文本顏色。我已經嘗試了以上所有內容,但是它不起作用/: – user5195185

+1

@ user5195185嘗試像這樣([nameTxt,emailTxt,cityTxt,messageTxt] as [AnyObject])forEach {0} {0} {0} {0} 0.layer.borderWidth = 0.5 $ 0 .layer.cornerRadius = 6; $ 0.layer.borderColor = UIColor(white:0.2,alpha:0.25).cgColor if textField = $ 0 as? UITextField {textField.textColor = UIColor(white:1,alpha:0.25) } if textView = $ 0 as? UITextView textView.textContainer.lineFragmentPadding = 0 } }' –

+0

裏面的textview鑄造你做任何特定的TextView和相同的適用於TextField –

相關問題