2017-09-15 72 views
3

我將CALayer作爲運行時屬性作爲邊界顏色的擴展,但它不起作用。運行時BorderColor在Xcode 9中不起作用

它僅顯示默認的黑色。

extension CALayer { 
    var borderUIColor: UIColor { 
     set { 
      self.borderColor = newValue.cgColor 
     } 

     get { 
      return UIColor(cgColor: self.borderColor!) 
     } 
    } 
} 

enter image description here

+1

您不需要任何擴展。你可以直接從Xcode的_Identity Inspector_訪問圖層的borderColor。 – clemens

+0

我認爲沒有這樣的功能。 – nirav

+0

@macmoonshine:我想你可以指定layer.borderColor在用戶定義的運行時屬性部分 –

回答

0

試試這個:

extension UILabel{ 
    func setBorderColor(width:CGFloat,color:UIColor) -> Void 
    { 
     self.layer.borderColor = color.cgColor 
     self.layer.borderWidth = width 
    } 
} 

和實現這個功能,無論你想,像這樣

label.setBorderColor(width: 2.0, color: UIColor.brown) 

希望這有助於!

+0

這是不是解決這個好辦法... – nirav

1

你應該處理nil值謹慎,並可能創建一個擴展UIView它聲明屬性爲@IBInspectabe

import UIKit 

extension UIView { 
    @IBInspectable var borderColor: UIColor? { 
     get { 
      if let color = layer.borderColor { 
       return UIColor(cgColor: color) 
      } 
      else { 
       return nil 
      } 
     } 
     set { layer.borderColor = newValue?.cgColor } 
    } 
} 

這使得它更容易設置在屬性檢查器的邊框顏色。

編輯:你的例子適用於Xcode 9.0和8.3.3。可能它是一個測試版本中的錯誤。

+1

這並沒有回答這個問題,爲什麼他們的解決方案不起作用。 –

+0

@BryanBryce:對不起,上週我無法給出更詳細的理由。我認爲這是Xcode測試版中的一個問題。 _nirav_的擴展按預期工作。 – clemens

相關問題