2014-11-12 6 views
6

Ich versuche, den Kreis unten eine undurchsichtige durchgehende weiße Farbe zu erhalten, wo der cornerRadius die UIView ausschneidet.Circular UIView (mit cornerRadius) ohne Blended Layer

Ich habe ein paar Dinge wie die Einstellung der Hintergrundfarbe und undurchsichtig ohne Glück versucht. Color Blended Layers zeigt weiterhin, dass die Umgebung des Kreises transparent ist. Weiß jemand, wie man das löst?

+0

Sie müssen erklären, was Sie meinen oder ein Bild oder etwas zeigen. Hast du versucht, 'circle.clipsToBounds = YES;'? – Fogmeister

Antwort

6

Mischen zu vermeiden, wenn abgerundete Ecken verwendet wird, die Rundung in drawRect getan werden muss, und nicht als eine Eigenschaft auf der Schicht. Ich benötigte UICollectionView-Zellen mit abgerundetem Hintergrund in einer App, an der ich gerade arbeite. Als ich layer.cornerRadius benutzt habe, hat die Performance einen großen Erfolg gehabt. Einschalten Farbe gemischt Schichten ergab die folgenden:

blended cells

nicht, was ich hatte gehofft, ich will diese Zellen grün gefärbt werden, das angibt, dass keine Vermischung stattfindet. Um dies zu tun, unterteilte ich UIView in RoundedCornerView. Meine Implementierung ist wirklich kurz und bündig:

import UIKit 

class RoundedCornerView: UIView { 
    static let cornerRadius = 40.0 as CGFloat 

    override func drawRect(rect: CGRect) { 
     let borderPath = UIBezierPath(roundedRect: self.bounds, cornerRadius: RoundedCornerView.cornerRadius) 
     UIColor.whiteColor().set() 
     borderPath.fill() 
    } 
} 

Dann stelle ich die Ansicht, die ich Runden wurde ein RoundedCornerView in meiner Feder zu sein. Laufen an diesem Punkt ergab dies:

non-blended cells

Scrolling ist buttrig glatt und es ist nicht mehr Vermischung auftritt. Ein seltsamer Nebeneffekt davon ist, dass die backgroundColor-Eigenschaft der Ansicht den ausgeschlossenen Bereich der Ecken und nicht den Hauptteil der Ansicht einfärbt. Dies bedeutet, dass die backgroundColor auf dem Hintergrund der Ansicht und nicht auf der gewünschten Füllfarbe eingestellt werden sollte.

-1

Set clipsToBounds auf der Ansicht oder masksToBounds auf der Schicht zu YES

+0

Dies hat nicht funktioniert. – user2336702

Verwandte Themen