Czy istnieje sposób tworzenia okrągłych etykiet UIL? Jeśli odpowiedź brzmi „nie”, jak można by zabrać się za stworzenie takiego obiektu?
źródło
Czy istnieje sposób tworzenia okrągłych etykiet UIL? Jeśli odpowiedź brzmi „nie”, jak można by zabrać się za stworzenie takiego obiektu?
iPhone OS 3.0 i nowsze obsługują cornerRadius
właściwość w CALayer
klasie. Każdy widok ma CALayer
instancję, którą możesz manipulować. Oznacza to, że możesz uzyskać zaokrąglone rogi w jednej linii:
view.layer.cornerRadius = 8;
Będziesz musiał #import <QuartzCore/QuartzCore.h>
połączyć się ze strukturą QuartzCore, aby uzyskać dostęp do nagłówków i właściwości CALayera.
Jednym ze sposobów, z którego ostatnio korzystałem, jest utworzenie podklasy UIView, która po prostu rysuje zaokrąglony prostokąt, a następnie tworzy UILabel lub, w moim przypadku, UITextView, podwidok wewnątrz niej. Konkretnie:
UIView
podklasę i nazwij ją podobną do RoundRectView
.RoundRectView
's drawRect:
narysuj ścieżkę wokół granic widoku, używając wywołań Core Graphics, takich jak CGContextAddLineToPoint () dla krawędzi i CGContextAddArcToPoint () dla zaokrąglonych rogów.UILabel
wystąpienie i ustaw go jako podwidok RoundRectView.label.frame = CGRectInset(roundRectView.bounds, 8, 8);
)Możesz umieścić RoundRectView w widoku za pomocą Interface Builder, jeśli utworzysz ogólny UIView, a następnie zmienisz jego klasę za pomocą inspektora. Nie zobaczysz prostokąta, dopóki nie skompilujesz i nie uruchomisz aplikacji, ale przynajmniej będziesz w stanie umieścić widok podrzędny i połączyć go z gniazdami lub akcjami w razie potrzeby.
W przypadku urządzeń z iOS 7.1 lub nowszym musisz dodać:
źródło
Dla Swift IOS8 i nowszych w oparciu o odpowiedź OScarsWyck:
źródło
YES
natrue
.UILabel
o nazwie:myLabel
.#import <QuartzCore/QuartzCore.h>
w swoim
viewDidLoad
napisz tę linię:self.myLabel.layer.cornerRadius = 8;
Powodzenia
źródło
Możesz zrobić zaokrąglone obramowanie z szerokością obramowania dowolnej kontroli w ten sposób: -
Po prostu wymień
lblName
naUILabel
.Uwaga: - Nie zapomnij zaimportować
<QuartzCore/QuartzCore.h>
źródło
Stworzyłem szybką
UILabel
podklasę, aby osiągnąć ten efekt. Ponadto automatycznie ustawiam kolor tekstu na czarny lub biały, aby uzyskać maksymalny kontrast.Wynik
Używane słupki SO:
Plac zabaw
Po prostu wklej to do Playground iOS:
źródło
Inną metodą jest umieszczenie png za UILabel. Mam widoki z kilkoma etykietami, które nakładają się na pojedynczy plik PNG w tle, zawierający całą grafikę dla poszczególnych etykiet.
źródło
xCode 7.3.1 iOS 9.3.2
źródło
Jeśli chcesz zaokrąglony narożnik UI obiektów jak (
UILabel
,UIView
,UIButton
,UIImageView
) przez ujęć następnie ustawićclip to bounds
prawdziwe i ustawićUser Defined Runtime Attributes
ścieżkę klucza jakolayer.cornerRadius
type = liczba i wartość = 9 (jako wymóg)źródło
źródło
Szybki 3
Jeśli chcesz mieć zaokrągloną etykietę z kolorem tła, oprócz większości innych odpowiedzi musisz również ustawić
layer
kolor tła. Nie działa przy ustawianiuview
koloru tła.Jeśli korzystasz z automatycznego układu, potrzebujesz dopełnienia wokół etykiety i nie chcesz ręcznie ustawiać rozmiaru etykiety, możesz utworzyć podklasę UILabel i nadpisać
intrinsincContentSize
właściwość:Aby połączyć te dwa elementy, musisz również ustawić
label.textAlignment = center
, w przeciwnym razie tekst zostanie wyrównany do lewej.źródło
W Monotouch / Xamarin.iOS rozwiązałem ten sam problem:
źródło
Działa idealnie w Swift 2.0
źródło
Czy próbowałeś użyć
UIButton
kreatora interfejsu (który ma zaokrąglone rogi) i eksperymentowałeś z ustawieniami, aby wyglądał jak etykieta? jeśli chcesz tylko wyświetlać w nim tekst statyczny.źródło
"cornerRadius" jest kluczową właściwością do ustawiania zaokrąglonych krawędzi, gdzie jeśli używasz tego samego stylu dla wszystkich etykiet w swojej aplikacji, poleciłbym metodę rozszerzenia.
Kod:
Wynik:
Dlaczego metoda przedłużania?
Utwórz plik Swift i dodaj następujący kod, który zawiera metodę Extention do klasy „UILabel”, gdzie ta metoda jest zdefiniowana przez użytkownika, ale będzie działać dla wszystkich etykiet w Twojej aplikacji i pomoże zachować spójność i czysty kod, jeśli zmiana dowolnego stylu w przyszłości wymaga tylko w metodzie rozszerzenia.
źródło
W zależności od tego, co dokładnie robisz, możesz programowo utworzyć obraz i ustawić go jako tło.
źródło