In meinem Punkt der beiden clipstobounds und maskstobounds macht den gleichen Job.
Ich konnte keinen Unterschied zwischen ihnen finden.
Jemand erklärt mir freundlicherweise, wie beide anders sind.
masksToBounds
Alle Sublayer der Ebene, die sich außerhalb ihrer Grenzen erstrecken, werden an diese Grenzen angehängt. Stellen Sie sich die Schicht in diesem Fall als Fenster auf ihre Unterschichten vor. alles außerhalb der Ränder des Fensters ist nicht sichtbar. Wenn "masksToBounds" auf "NO" gesetzt ist, wird kein Clipping ausgelöst.
Wenn der Wert dieser Eigenschaft wahr ist, erstellt Core Animation eine implizite Schnittmaske, die den Grenzen der Ebene entspricht und alle Eckenradieneffekte enthält. Wenn auch ein Wert für die mask-Eigenschaft angegeben wird, werden die beiden Masken multipliziert, um den endgültigen Maskenwert zu erhalten.
Weitere Informationen erhalten Sie in der API-Referenz .
clipToBounds
Der Anwendungsfall für clipsToBounds ist eher für Teilansichten, die teilweise außerhalb der Hauptansicht liegen. Zum Beispiel habe ich eine (kreisförmige) Unteransicht am Rand der übergeordneten (rechteckigen) UIView. Wenn Sie clipsToBounds auf YES setzen, wird nur die Hälfte des Kreises / der Unteransicht angezeigt. Wenn NEIN eingestellt ist, wird der gesamte Kreis angezeigt. Gerade angetroffen das wollte so teilen
für weitere Informationen Beispiellink
ClipstoBounds : Wenn clipsToBounds auf YES gesetzt ist, sehe ich nur den Teil der Unteransicht, der in die Grenzen der Superview passt. Andernfalls, wenn clipsToBounds auf NO gesetzt ist, sehe ich die gesamte Subview, auch die Teile außerhalb der Superview
MaskstoBounds : Wenn die Eigenschaft mascetsToBounds auf YES gesetzt ist, werden alle Unterlayer des Layers, die sich außerhalb seiner Grenzen erstrecken, an diese Grenzen angehängt. Stellen Sie sich die Schicht in diesem Fall als Fenster auf ihre Unterschichten vor. alles außerhalb der Ränder des Fensters ist nicht sichtbar. Wenn "masksToBounds" auf "NO" gesetzt ist, tritt keine Übersteuerung auf, und alle Sublayer, die sich außerhalb der Grenzen des Layers befinden, werden vollständig sichtbar sein (solange sie nicht über die Ränder eines Superlayers hinausgehen, für den die Maskierung aktiviert ist).
Tags und Links objective-c ios swift cocoa-touch