Czy można kontrolować właściwości obramowania UIView (kolor, grubość itp.) Bezpośrednio z konstruktora interfejsu, czy mogę to zrobić tylko programowo?
ios
uiview
interface-builder
border
matteo.cajani
źródło
źródło
Odpowiedzi:
W rzeczywistości można ustawić niektóre właściwości warstwy widoku za pomocą konstruktora interfejsów. Wiem, że mogę ustawić borderWidth i cornerRadius warstwy poprzez xcode. borderColor nie działa, prawdopodobnie dlatego, że warstwa chce CGColor zamiast UIColor.
Być może będziesz musiał użyć Ciągów zamiast liczb, ale to działa!
źródło
Odpowiedź Rich86Man jest poprawna, ale możesz użyć kategorii do określenia właściwości proxy, takich jak layer.borderColor. (Z konwencjonalnego CocoaPod)
CALayer + XibConfiguration.h:
CALayer + XibConfiguration.m:
Wynik będzie widoczny podczas działania, a nie w Xcode.
Edycja : Musisz także ustawić
layer.borderWidth
co najmniej 1, aby zobaczyć ramkę z wybranym kolorem.W Swift 2.0:
W Swift 3.0:
źródło
Podobna odpowiedź do iHulk, ale w Swift
Dodaj plik o nazwie UIView.swift do swojego projektu (lub po prostu wklej go w dowolnym pliku):
Następnie będzie to dostępne w Konstruktorze interfejsów dla każdego przycisku, imageView, etykiety itp. W panelu Narzędzia> Inspektor atrybutów:
Uwaga: ramka pojawi się tylko w czasie wykonywania.
źródło
@IBDesignable
z początku rozszerzenia.Możesz utworzyć kategorię UIView i dodać ją do pliku .h kategorii
Teraz dodaj to do pliku .m
i to również w. plik m
teraz zobaczysz to w swojej serii ujęć dla wszystkich podklas UIView (UILabel, UITextField, UIImageView itp.)
To wszystko .. Nie trzeba importować kategorii w dowolnym miejscu, wystarczy dodać pliki kategorii w projekcie i zobaczyć te właściwości w serii ujęć.
źródło
W przypadku Swift 3 i 4 , jeśli chcesz użyć
IBInspectable
s, jest to:źródło
chociaż może to ustawić właściwości, w rzeczywistości nie odzwierciedla się w IB. Więc jeśli zasadniczo piszesz kod w IB, równie dobrze możesz to zrobić w kodzie źródłowym
źródło
Jeśli chcesz zaoszczędzić czas, po prostu użyj dwóch
UIViews
na sobie, jeden z tyłu ma kolor obramowania, a ten z przodu mniejszy, co daje efekt graniczny. Nie wydaje mi się, żeby było to również eleganckie rozwiązanie, ale jeśli Apple trochę bardziej to obchodzi, nie powinieneś tego robić.źródło
Jest to absolutnie możliwe tylko wtedy, gdy ustawiasz
layer.masksToBounds = true
i odpoczywasz.źródło
Tak więc zawsze jest idealna odpowiedź przy użyciu kodu, wystarczy utworzyć instancję IBOutlet UIView i dodać właściwości
Krótka odpowiedź :
Długa odpowiedź :
Zaokrąglone rogi UIView / UIButton itp
Grubość granicy
Kolor ramki
źródło
Dodaj 2 proste linie kodu:
Będzie dobrze działać.
źródło