Jak mogę dostosować rozmiar obrazu przycisku UIButton? Ustawiam obraz tak:
[myLikesButton setImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];
Jednak to wypełnia obraz do całego przycisku, jak zmniejszyć obraz?
ios
objective-c
xcode
uibutton
sztolnia
źródło
źródło
Odpowiedzi:
Jeśli dobrze rozumiem, co próbujesz zrobić, musisz pobawić się wstawką krawędzi obrazu przycisków. Coś jak:
źródło
Odpowiedź Tima jest poprawna, jednak chciałem dodać kolejną sugestię, ponieważ w moim przypadku było w sumie prostsze rozwiązanie.
Chciałem ustawić
UIButton
wstawki obrazu, ponieważ nie zdawałem sobie sprawy, że mogę ustawić tryb treści na przyciskuUIImageView
, co całkowicie wyeliminowałoby potrzebę używania UIEdgeInsets i wartości zakodowanych na stałe. Po prostu uzyskaj dostęp do podstawowego widoku obrazu za pomocą przycisku i ustaw tryb treści:Widzisz, UIButton nie nasłuchuje ustawienia trybu treści?
Szybki 3
źródło
button.backgroundImageView.contentMode
nie działaSwift 3:
źródło
contentVerticalAlignment/contentHorizontalAlignment
opcje pozwoliły mi skalować ją tak, jak miałem nadzieję. Dziękuję za wysłanie tego.contentHorizontalAlignment
icontentVerticalAlignment
załatwiło sprawęMożesz to również zrobić w takim kreatorze interfejsów.
Myślę, że to pomocne.
źródło
Jeśli obraz jest za duży (i nie możesz / nie chcesz po prostu pomniejszyć obrazu), połączenie dwóch pierwszych odpowiedzi działa świetnie.
O ile wstawki obrazu nie są prawidłowe, obraz zostanie przekrzywiony bez zmiany rozszerzenia
contentMode
.źródło
you can use
imageEdgeInsets
property Marginesy wewnętrzne lub początkowe prostokąta wokół obrazu przycisku.Dodatnia wartość zmniejsza lub wstawia tę krawędź - w ruchu. Ujemna wartość rozszerza lub przewyższa tę krawędź.
źródło
Oto inne rozwiązanie do skalowania imageView z UIButton.
źródło
Oto wersja Swift:
źródło
Szybki 4
Będziesz musiał użyć tych dwóch wierszy kodu w tej określonej kolejności. Wystarczy zmienić górną i dolną wartość wstawek krawędziowych.
źródło
EXC_BAD_ACCESS
błąd podczas wywołania zoverride func layoutSubviews()
.Z pomocą odpowiedzi Tima C. udało mi się stworzyć rozszerzenie dotyczące
UIButton
korzystania z języka Swift, które pozwala określić ramkę obrazu za pomocą.setImage()
funkcji z dodatkowymframe
parametremUżywając tego, jeśli chcesz ustawić ramkę a
UIButton
naCGRectMake(0, 0, 64, 64)
i ustawić jej obrazmyImage
z ramkąCGRectMake(8, 8, 48, 48)
, możesz użyćźródło
if let
zamiast sprawdzać, czyframe
jest,nil
a następnie wymusić rozpakowanie miliardów razy .Zmieniając rozmiar ikony za pomocą
UIEdgeInsetsMake(top, left, bottom, right)
, należy pamiętać o wymiarach przycisków i możliwościach UIEdgeInsetsMake do pracy z wartościami ujemnymi tak, jakby były dodatnie.Przykład: dwa przyciski o wysokości 100 i proporcjach 1: 1.
Przykłady 1 i 3 są identyczne, ponieważ ABS (100 - (40 + 40)) = ABS (100 - (60 + 60))
źródło
Szybki 3
Ustawiam szerokość i wysokość myButton na 40, a moje wypełnienie z EdgeInsetsMake to 15 ze wszystkich stron. Proponuję dodać kolor tła do przycisku, aby zobaczyć rzeczywiste wypełnienie.
źródło
Jedną z metod jest zmiana rozmiaru UIImage w kodzie, jak poniżej. Uwaga: ten kod skaluje się tylko według wysokości, ale można łatwo dostosować funkcję również do skalowania według szerokości.
źródło
Zaktualizowano dla Swift> 5
ustaw rozmiar:
ustaw marginesy:
źródło
Zaktualizowano dla Swift 3
źródło
Myślę, że rozmiar obrazu jest taki sam jak rozmiar przycisku, a następnie umieszczasz obraz w tle przycisku, na przykład:
masz maszt ma ten sam rozmiar obrazu i przycisku. Mam nadzieję, że rozumiesz mój punkt widzenia.
źródło