2017-10-12 111 views
1

在迅速3,我可以做這樣的事情,使我UIView角落輪:圓角的UIView斯威夫特4

import UIKit 

@IBDesignable 
class DesignableView: UIView { 
} 

extension UIView { 

    @IBInspectable 
    var cornerRadius: CGFloat { 
     get { 
      return layer.cornerRadius 
     } 
     set { 
      layer.cornerRadius = newValue 
     } 
    } 
} 

,並在故事板,我可以簡單地改變這樣的: properties

目前我在可設計的情況下得到「構建失敗」,但Idk爲什麼。我正在使用Swift 4和Xcode 9.

爲什麼它不能在swift 4中工作?

+0

什麼問題呢?一切正常。 –

+1

請提供足夠的代碼讓我們重現問題。 – matt

+0

@matt我已更新代碼並添加了我在Xcode 8和Swift 3中使用的描述性圖像 –

回答

4

我試過你的代碼,它的正常工作與iOS 11.1 &雨燕4.0。 (正如你所提到它表明你一個錯誤,但它不顯示我的任何錯誤)

@IBDesignable 
class RoundUIView: UIView { 

    @IBInspectable var borderColor: UIColor = UIColor.white { 
     didSet { 
      self.layer.borderColor = borderColor.cgColor 
     } 
    } 

    @IBInspectable var borderWidth: CGFloat = 2.0 { 
     didSet { 
      self.layer.borderWidth = borderWidth 
     } 
    } 

    @IBInspectable var cornerRadius: CGFloat = 0.0 { 
     didSet { 
      self.layer.cornerRadius = cornerRadius 
     } 
    } 

} 

下面是結果

enter image description here


更新:
即使你更新後的代碼工作正常,也。

@IBDesignable 
class DesignableView: UIView { 
} 

extension UIView { 

    @IBInspectable 
    var cornerRadius: CGFloat { 
     get { 
      return layer.cornerRadius 
     } 
     set { 
      layer.cornerRadius = newValue 
     } 
    } 
} 

下面是結果吧:

enter image description here

+0

簡單狀態「適用於我」的答案實際上不是可接受的答案堆棧溢出。 – rmaddy

+4

@rmaddy有時需要證明才能顯示代碼的工作原理。我認爲這個答案是完全合理的。 – matt

+0

@matt請看https://meta.stackoverflow.com/questions/277923/are-your-code-works-fine-for-me-answers-acceptable – rmaddy

0

你的代碼在新項目中似乎在Swift 4.0中工作正常。但是,if you are using a Storyboard and its set as LaunchScreen too, you won't be able to use custom classes directly there

在這種情況下,只需取消選中即可用作啓動屏幕,您應該可以重新構建。

enter image description here

+0

它不在LaunchScreen –

+0

你能分享更多關於構建錯誤的信息嗎?有可能看到詳細的消息打開Report Navigator – jvrmed

+0

沒有應用程序構建錯誤,這是一個可設計的構建錯誤,它不會停止應用程序運行 –