2017-09-22 1 views
1

Ich versuche, meine UIView innerhalb der Tabelle Zelle Prototyp, um es Schatten für sie und ein paar mehr Styling Anpassung, aber aus irgendeinem Grund, wenn ich das Projekt bauen die Änderungen nicht angewendet werden.Swift @ IBDesignable/@ IBInspectable UIView Styling

Ich habe den nächsten Code für sie in separaten Datei CustomView.swift

import UIKit 

@IBDesignable 
class CustomView: UIView { 



    @IBInspectable var cornerRadius: CGFloat = 0 { 
     didSet { 
      layer.cornerRadius = cornerRadius 
      layer.masksToBounds = cornerRadius > 0 
     } 
    } 

    @IBInspectable var shadowOpacity: Float = 0 { 
     didSet { 
      layer.shadowOpacity = shadowOpacity 
     } 
    } 

    @IBInspectable var shadowRadius: CGFloat = 0 { 
     didSet { 
      layer.shadowRadius = shadowRadius 
     } 
    } 

    @IBInspectable var shadowOffset: CGSize = CGSize(width: 0.0, height: 0.0) { 
     didSet { 
      layer.shadowOffset = shadowOffset 
     } 
    } 

    @IBInspectable var shadowColor: UIColor? = UIColor(red: 157/255, green: 157/255, blue: 157/255, alpha: 1.0) { 
     didSet { 
      layer.shadowColor = shadowColor?.cgColor 
     } 
    } 

} 

ich das Feld im Inneren des „Attribut Inspektor“ sehen von Xcode 9 "Attribute inspector" of Xcode 9

aber die Änderung nach dem Bau nicht angewendet Im Grunde sehe ich den Schatten nicht zur Ansicht.

Die interessanteste, dass ich den gleichen Ansatz bin mit Textfeldern sowie Tasten und dieser Code für UIButton/UITextField arbeitet anzufertigen, aber nicht für UIView

Weiß jemand, warum es nicht für UIView funktioniert?

Jede Hilfe sehr geschätzt.

Vielen Dank.

Antwort

3

überprüfen Code:

layer.masksToBounds = cornerRadius > 0 

Ändern Sie diesen an:

layer.masksToBounds = false 

Und auch sicherstellen, dass Ihre clipsToBounds wie so zu false entweder in Code festgelegt ist:

clipsToBounds = false 

oder in Ihrem Storyboard wie folgt:

enter image description here

+0

hallo, danke für das Kommen zu mir zurück. Ich habe Ihren Code-Vorschlag ausprobiert und es hat nicht funktioniert. So sieht mein Storyboard so aus [Storyboard] (https://i.imgur.com/xcRwYbu.png) und nachdem ich das Projekt erstellt habe, sehe ich das im Simulator für IPhone8 [sim_result] (https: // i .imgur.com/t0XtB7p.png) kein Schatten. Der Code in meinem CustomView.swift das gleiche plus Ihre vorgeschlagene Änderung. –

+0

in Ihrem Storyboard screenshot Ich kann das clipsToBounds Flag nicht sehen, prüfen ob das nicht auf true gesetzt ist, das sollte auch false sein –

+0

Hi yeah, ich denke das war ein Problem nach dem Setzen von clipToBounds auf false hat es angefangen zu arbeiten. Ich schätze deine Hilfe sehr. Danke –

0

Bitte aktualisiere die Funktion

@IBInspectable 
    var cornerRadius: CGFloat = 0 { 
     didSet { 
      layer.cornerRadius = cornerRadius 
     } 
    } 
+0

Hallo, danke für die Antwort, ich habe versucht, Ihren Code Vorschlag und es hat nicht funktioniert für mich. So sieht mein Storyboard so aus [Storyboard] (https://i.imgur.com/xcRwYbu.png) und nachdem ich das Projekt erstellt habe, sehe ich das im Simulator für IPhone8 [sim_result] (https: // i .imgur.com/t0XtB7p.png) kein Schatten. Der Code in meinem CustomView.swift das gleiche plus Ihre vorgeschlagene Änderung. –

Verwandte Themen