2012-12-06 1 views
10

Ich habe gerade ein UILabel-Bauteil in eine Ansicht eingefügt und versuche, es zu einer abgerundeten UILabel-Ecke zu machen. Ich habe einige Fragen und Antworten zum selben Thema gelesen, aber alle sagen, dass ich den Quellcode ändern muss. Ist es wirklich notwendig in den neuen Xcode 4.5 und iOS6? Ich bin mir auch nicht sicher, ob ich den vom mainstoryboard generierten Code sehen kann.UILabel mit abgerundeter Ecke (Xcode 4.5 und iOS 6)

Jede Hilfe wird geschätzt.

Vielen Dank, Marcos

+0

Bitte akzeptieren Sie meine oder Ismaels Antwort, wenn sie Ihnen geholfen haben.Ich möchte meinen Ruf und Ismael gewinnen, auch ich bin sicher –

Antwort

11

machen UILabel mit abgerundeten Ecken wie folgt vor:

#import <QuartzCore/QuartzCore.h> 

dann sollten Sie auf Ihre UILabel verweisen

yourLabel.layer.cornerRadius = 5; 

5 nur ein Beispiel ist, natürlich

+0

Vielen Dank. Nur eine letzte Frage: Gibt es einen bestimmten Ort, um diesen Code hinzuzufügen? Ich bin mir nicht sicher, ob ich Zugriff auf den vom Xcode Interface Builder generierten Code habe. Gibt es eine spezielle Methode auf dem Controller, wo dieser Code hinzugefügt werden sollte? – vilelam

+0

Nun, Sie sollten eine Ausgangsvariable UILabel * haben, die mit der von Ihnen in IB erstellten verbunden ist. Und Sie legen den Eckradius für diese Variable fest, wo immer Sie möchten. viewDidLoad oder viewWillAppear sollte gut funktionieren –

1

Sie müssen #import "QuartzCore/QuartzCore.h" und irgendwo auf dem Code tun

label.layer.cornerRadius = 2.0; // or whatever radius you want 
+0

Vielen Dank. Nur eine letzte Frage: Gibt es einen bestimmten Ort, um diesen Code hinzuzufügen? Ich bin mir nicht sicher, ob ich Zugriff auf den vom Xcode Interface Builder generierten Code habe. Gibt es eine spezielle Methode auf dem Controller, wo dieser Code hinzugefügt werden sollte? – vilelam

+0

Das hängt davon ab, wo sich Ihre Zelle befindet. Sie müssen einen Verweis darauf auf Ihrem Controller haben, und wenn es vom Interface Builder erstellt wird, dann sollten Sie dies auf Ihrer 'viewDidLoad' Methode hinzufügen – Ismael

+0

Sehr schön! Ich war dazu in der Lage. Ich habe den Code in die viewDidLoad Methode hinzugefügt und es funktioniert reibungslos. – vilelam

-1

Ja, es kann nur durch Hinzufügen von Code, erwähnt von anderen Jungs hier getan werden. Leider kann Interface Builder das jetzt nicht machen.

+0

@PradeepReddyKypa in Xcode 4.5? –

12

Sie können alles in Interface Builder tun.
Wählen Sie in XCode Ihre .xib Datei (oder Storyboard), um den Interface Builder zu öffnen. Klicken Sie auf Ihre UILabel und öffnen Sie die Identität Inspektor (wenn Sie nicht wissen, wo es ist, gehen Sie zu Xcode Hilfemenü und geben Sie „Identität Inspektor“). Klicken Sie auf die Plus-Schaltfläche unter der User Defined Runtime-Attribute Fenster und schreiben layer.cornerRadius für den Key Path, wählte Number für die Typ und 5 (oder irgendeine andere Zahl) für den Wert.
Wenn Sie jetzt Ihr Projekt ausführen, sollten Sie eine runde eckige UILabel bekommen.

+2

das funktioniert nur, wenn "clip subviews" aktiviert ist (ich bin auf Xcode 6) – mnl

1

Sie können dies im Interface Builder tun, indem Sie layer.cornerRadius als einen der Schlüssel in 'Benutzerdefinierte Laufzeitattribute' unter 'Identity Inspector' hinzufügen.

1

Fügen Sie den Quartz Rahmen zu einem Projekt-Frameworks

import "QuartzCore/QuartzCore.h" 

Verwendung folgenden Code -

label.layer.cornerRadius = 2.0; // radius depend on how much rounded corner you want. 
label.clipsToBounds = TRUE; 
0

Ich dachte, ich eine etwas bessere Art und Weise teilen würde es für neuere Entwicklungsumgebungen (mit Swift) zu tun . Mit dem folgenden Code erhalten Sie ein spezielles Feld im Interface Builder, mit dem Sie den Eckenradius festlegen können. Ein neuer Unterabschnitt wird im Attribut-Inspektor namens "Ansicht" angezeigt, in dem sich ein Element mit der Bezeichnung "Eckradius" befindet.

#if !os(watchOS) 
    // watchOS UI designer allows setting of a corner radius. For 
    // iOS and tvOS, an Interface Builder extension is needed. 
    extension UIView { 
     @IBInspectable var cornerRadius: CGFloat { 
      get { 
       return layer.cornerRadius 
      } 
      set { 
       layer.cornerRadius = newValue 
       layer.masksToBounds = newValue > 0 
      } 
     } 
    } 
#endif