2016-04-14 64 views
0

我想把一些文本放在CGRect的中心位置,該圖像位於該圖像的頂部。以下是一段代碼:使用Swift的drawInRect文本對齊

 let textColor: UIColor = UIColor.whiteColor() 
     let textFont: UIFont = UIFont(name: "Helvetica Bold", size: 17 
      )! 
     let textAlignment = NSTextAlignment.Center 

     let textFontAttributes = [ 
      NSFontAttributeName: textFont, 
      NSForegroundColorAttributeName: textColor, 
      NSTextAlignment: textAlignment 
      ] 

     myString.drawInRect(rect, withAttributes: textFontAttributes) 

問題在於文本對齊。當我把它寫這樣我得到一個錯誤:

Type of expression is ambiguous without more context

當我設置鍵和值類型[字符串:AnyObject]編譯器再次抱怨:

Cannot convert value of type 'NSTextAlignment.Type' to expected dictionary key type 'String'

我理解。我研究了這兩個小時,並沒有找到任何最新的解決方案,而不是單一的雲如何使用Swift寫這個。

回答

3

NSTextAlignment不是有效的密鑰。請注意其他密鑰如何在Name中結束。請參閱文檔NSFontAttributeNameNSForegroundColorAttributeName以查看有效密鑰的列表。

而不是NSTextAlignment您需要使用NSParagraphStyleAttributeName這需要您創建一個NSParagraphStyle的實例。那就是你設置alignment.Center的地方。

let paragraphStyle = NSMutableParagraphStyle() 
paragraphStyle.alignment = .Center 
1

文本對齊屬於段落樣式。創建一個NSMutableParagraphStyle實例,並將其與密鑰NSParagraphStyleAttributeName一起傳遞給屬性。

let style = NSMutableParagraphStyle() 
style.alignment = .Center 
let textFontAttributes = [ 
      NSFontAttributeName: textFont, 
      NSForegroundColorAttributeName: textColor, 
      NSParagraphStyleAttributeName: style 
      ]