2016-08-11 1 views
1

J'ai une vue simple @IBDesignable que je l'ai spécifié comme la classe de base pour une scène dans mon story-board MacOs. Par exemple, dans Xcode 8, Swift 3:vue IBDesignable pas rendu

@IBDesignable class OvalView: NSView { 

    @IBInspectable var strokeColor: NSColor = .black { didSet { needsDisplay = true } } 

    @IBInspectable var brushSize: CGFloat = 5.0 { didSet { needsDisplay = true } } 

    override func draw(_ dirtyRect: NSRect) { 
     super.draw(dirtyRect) 

     strokeColor.setStroke() 

     let path = NSBezierPath(ovalIn: NSInsetRect(bounds, brushSize/2, brushSize/2)) 
     path.lineWidth = brushSize 
     path.stroke() 
    } 

} 

Quand je lance l'application, ce point de vue semble bien. Mais cette vue n'est pas rendue dans ma scène dans Interface Builder. Pourquoi?

Le problème se manifeste dans Xcode 7.3.1 avec un rendu Swift 2 du code ci-dessus aussi.

Répondre

2

Le problème est que Interface Builder ne semble pas afficher correctement une vue macOS @IBDesignable dans Interface Builder si cette vue est la vue de niveau supérieur d'une scène. Il sera dans iOS, mais pas macOS. Dans macOS, il affiche uniquement la vue configurable dans Interface Builder s'il s'agit d'une sous-vue, mais pas de la vue de niveau supérieur.

J'ai déposé un rapport de bogue. # 27817119

+0

J'ai reçu la mise à jour que ce rapport de bogue a été un double d'un précédent. Donc, Apple est au moins conscient de la question. – Rob

+1

Ce bug semble toujours exister dans XCode 8.3 :( – Alnitak