2016-06-12 14 views
4

Ich habe versucht, den UIButton in den Zellen einen perfekten Kreis zu machen. Leider wurde der Kreis basierend auf dem Hintergrundbild und nicht dem UIButton-Rahmen gebildet.Wie mache ich UIButton zu einem Kreis?

Der Code, den ich für die Schaffung eines Kreises haben:

cell.StoryViewButton.setImage(image, forState: .Normal) 
cell.StoryViewButton.frame = CGRectMake(50, 8, 100, 100) 
cell.StoryViewButton.layer.masksToBounds = false 
cell.StoryViewButton.layer.cornerRadius = cell.StoryViewButton.frame.width/2 
cell.StoryViewButton.clipsToBounds = true 

Die Ausgabe sieht wie folgt aus: Output Images for each cell

Was kann ich tun, um die perfekten Kreis Schaltflächen-Frames zu erhalten, die ich will?

+0

Verwenden Sie Autolayout? dann setzt der Rahmen nicht. – HDT

+0

@HDT Ja, ich benutze Auto-Layout, sollte ich es ohne verwenden? –

+0

Es hängt von Ihrer aktuellen Implementierung ab, dass Sie immer noch das automatische Layout verwenden können. Verwenden Sie jedoch, anstatt den Rahmen zu setzen, Einschränkungen, um die Breite und Höhe Ihrer Ansicht gleich einzustellen. – HDT

Antwort

8

so etwas wie dieses

cell.StoryViewButton.layer.masksToBounds = true 
cell.StoryViewButton.layer.cornerRadius = cell.StoryViewButton.frame.width/2 

Versuchen Wenn Sie Sie einen Kreis Ansicht erstellen müssen haben masksToBounds auf true zu setzen, stellen Sie nicht clipsToBounds

Hope this Ihnen helfen.

+0

Thx es funktioniert, thx @ Nirav D – AliasCocoa

0

Es gibt den Arbeitscode. Ich teste es. Ich hoffe es hilft. Ich bin mir nicht sicher, warum, aber ich überprüfe, dass durch Ändern von Höhe und Breite des Rahmens in hier "CGRectMake (50, 8, 120, 120)", dass die Höhe und Breite des Rahmens und Höhe und Breite eines Knopfes sein sollte um den perfekten Kreis zu erhalten.

cell.StoryViewButton.setImage(image, forState: .Normal) 
cell.StoryViewButton.frame = CGRectMake(50, 8, 120, 120) 
cell.StoryViewButton.layer.cornerRadius = self.btn.frame.width/2; 
cell.StoryViewButton.layer.masksToBounds = true 

Ich hoffe, es hilft.

1

Swift 4

Sie könnten die folgende Funktion zu jeder Ansicht, einschließlich Schaltflächen anwenden.

func makeViewCircular(view: UIView) { 
    view.layer.cornerRadius = view.bounds.size.width/2.0 
    view.clipsToBounds = true 
} 

Großartig.

Das funktionierte für mich zunächst nicht, da ich es in ViewDidLoad anwendete. An diesem Punkt spielen Constraints immer noch mit der Größe Ihrer Tasten und der Eckenradius wird auf eine Schaltfläche angewendet, von der sie denkt, dass sie doppelt so groß ist, was zu den seltsamen Formen führt, die Sie haben. Um die richtigen Werte auf die richtigen Messungen anzuwenden, platzieren Sie den Code in override func viewDidLayoutSubviews().

Ich weiß, dass dies ein spezifischer Fall in meinem persönlichen Prozess sein kann, aber ich bin sicher, dass es jemandem helfen wird.