2017-10-12 5 views
1

En rapide 3 je pouvais faire quelque chose comme ça pour faire mes coins UIView tour:Coins arrondis UIView à Swift 4

import UIKit 

@IBDesignable 
class DesignableView: UIView { 
} 

extension UIView { 

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

Et au story-board que je pouvais changer simplement ceci: properties

Actuellement, je J'obtiens un "Build failed" au designable, mais Idk pourquoi. Je travaille sur swift 4 et Xcode 9.

Pourquoi ça ne fonctionne pas dans swift 4?

+0

ce qui est le problème? Tout fonctionne bien. –

+1

Veuillez fournir suffisamment de code pour nous permettre de reproduire le problème. – matt

+0

@matt J'ai mis à jour le code et ajouté une image descriptive de ce que j'ai l'habitude de faire dans Xcode 8 et swift 3 –

Répondre

4

J'ai essayé votre code et il fonctionne très bien avec iOS 11.1 & Swift 4.0. (Comme vous l'avez mentionné il vous montre une erreur, mais il ne me montre aucune erreur)

@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 
     } 
    } 

} 

Voici résultat

enter image description here


Mise à jour:
Même votre code mis à jour fonctionne bien, aussi.

@IBDesignable 
class DesignableView: UIView { 
} 

extension UIView { 

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

Voici résultat pour elle:

enter image description here

+0

Les réponses que l'état simple "ça marche pour moi" ne sont pas vraiment acceptables débordement de pile. – rmaddy

+4

@rmaddy Parfois, il faut une preuve pour montrer à l'OP que le code fonctionne. Je pense que cette réponse est parfaitement raisonnable. – matt

+0

@matt S'il vous plaît voir https://meta.stackoverflow.com/questions/277923/are-your-code-works-fine-for-me-answers-acceptable – rmaddy

0

Votre code semble fonctionner correctement dans Swift 4.0 avec un nouveau projet. Cependant, if you are using a Storyboard and its set as LaunchScreen too, you won't be able to use custom classes directly there.

Dans ce cas, il suffit de décocher Utilisez comme écran de lancement et vous devriez être en mesure de construire à nouveau.

enter image description here

+0

Ce n'est pas sur LaunchScreen –

+0

Pourriez-vous partager plus d'informations sur l'erreur de construction? Il est possible de voir les messages détaillés ouvrant le Report Navigator – jvrmed

+0

Il n'y a pas d'erreur de construction de l'application, c'est une erreur de construction, cela n'empêche pas l'application de fonctionner –