我有一個超級瘦的字體。在Photoshop中,我添加了筆劃,使其看起來更有吸引力。當它轉移到iOS我不能添加一個筆畫,除非我使用NSAttributedString。通過使用NSAttributedString,我得到了我的一個UILabels,看看它在photoshop中的樣子,但問題是,在我的應用完成時,我將擁有數百個UILabels。有沒有一種方法,我不必手動將每個UILabel連接到其各自的控制器並逐個設置其屬性文本。任何建議都會有幫助。IOS無論如何要在應用程序中使用NSAttributedString。 Swift
回答
基於@ AdamPro13建議,您可以爲您的NSAttributedString
協議擴展:
所以,用類似的東西創造NSAttributedStringExtension.swift
:
protocol NSAttributedStringExtension {
static func attributed(string:String, font:UIFont, color:UIColor) -> NSAttributedString
}
extension NSAttributedString : NSAttributedStringExtension {
class func attributed(string:String, font:UIFont, color:UIColor) -> NSAttributedString {
let attrs = [NSFontAttributeName:font, NSForegroundColorAttributeName:color]
return NSAttributedString(string: string, attributes: attrs)
}
}
而且你可以針對不同的標籤幾種不同的功能類型。 然後就申請您的標籤(粗碼)上:
let label:UILabel
let font:UIFont
let color:UIColor
label.attributedText = NSAttributedString.attributed("test", font: font, color: color)
注:字體和顏色你可以設置你的協議擴展功能
這個答案很好。在AdamPro13和你的答案之間,我想我已經想出了一個解決方案。創建一個類(BaseUILabel類)並將所有UILabel分配給該類。這節省了我將每個UILabel連接到控制器然後調用.attributed函數的麻煩。對於基於表格的標籤,我可以調用擴展名。非常感謝您提供這樣一個有見地的解決方案! –
如果你使用故事板,並希望使用UILabels正常,那麼你可以嘗試創建一個UILabel子類,如下所示,並將其作爲自定義類在故事板中使用。這將有效地替換文本與你想要的屬性文本,雖然你不會看到它,直到運行時。
class CustomLabel: UILabel {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
func commonInit() {
let attrs = [NSFontAttributeName: UIFont.boldSystemFontOfSize(19),
NSForegroundColorAttributeName: UIColor.blueColor()]
attributedText = NSAttributedString(string: text!, attributes: attrs)
}
}
感謝JonLz給你回覆。你的回答類似於AdamPro13所說的。起初我對我應該做什麼感到困惑,但仔細閱讀他的建議後,我想我應該這樣做。謝謝! Aleksey也爲我提供了一個解決方案,以解決所有非靜態的標籤 - 例如cells.textLabels –
- 1. 無論如何要在PHP中編寫android應用程序?
- 2. 使用swift解析IOS應用程序
- 3. 如何應用CSS到iOS的NSAttributedString
- 4. Android應用程序崩潰了,無論如何要恢復?
- 5. 如何使用Swift調試我的iOS應用程序
- 6. 無法在iPad中運行應用程序(Swift iOS)
- 7. 如何在應用程序中加載語言文件(ios swift)
- 8. 如何在iOS上的Swift中獲取共享應用程序?
- 9. 如何在iOS中獲取應用程序的CFBundleURLSchemes Swift
- 10. 如何在swift中驗證iOS應用程序
- 11. 使用swift在iOS應用程序中創建下拉菜單
- 12. 在Swift iOS應用程序中使用FBSDK的問題
- 13. 如何強制使用Fabric SDK在Swift iOS應用程序中發生崩潰?
- 14. 如何使用Swift在iOS應用程序中實現配置屏幕?
- 15. 無論如何在ASP.NET MVC3應用程序中使用Visual Studio 2012中的PageInspector?
- 16. 如何使用swift以編程方式將應用程序帶到ios 9中?
- 17. 無論如何在Eclipse中開發iPad應用程序?
- 18. 如何在iOS應用程序Instagram上飼料評論
- 19. 如何使用Swift檢測iOS應用程序何時出現在前臺?
- 20. NSAttributedString在Xamarin iOS中使用NSSuperscriptAttributeName
- 21. 無論如何,從iOS 8.3的應用程序擴展中打開容器應用程序?
- 22. 如何從其他應用程序啓動iOS照片應用程序? (Swift)
- 23. 在iOS應用程序中使用Office365 SDK的無聲登錄應用程序
- 24. 如何在Swift 1.2應用程序中使用TestFlight?
- 25. 如何更改ios swift中應用程序的相機權限
- 26. 使用Swift檢查在ios上運行的應用程序
- 27. 在iOS應用程序中使用xib導航應用程序
- 28. 在ios中使用@synthesize應用程序
- 29. 在iOS應用程序中使用DCMTK
- 30. 如何徹底測試用Swift創建的iOS應用程序?
這聽起來像你應該繼承標籤並在初始化器中設置你想要的屬性。 – AdamPro13
我應該怎麼做?我想創建一個UILabel類,並在初始化器中放入屬性?我會將UILabel連接到課程,這是正確的嗎? –