Mam UIView zawierający UIButton. UIButton ma 2 tytuły ustawione dla stanów UIControlStateNormal ("Follow") i UIControlStateSelected ("Follow"). Używam automatycznego układu na Uibuttonie i ma ograniczenie, aby być pewną odległością od górnej części podglądu, a inną, aby być pewną odległością od lewej strony superview. Użyłem też na nim "Rozmiar pasujących treści".Rozmiar wewnętrzny nie aktualizuje się po zmianie stanu UIButton
Po ustawieniu przycisku na wybrany stan z kodu, tytuł zmienia się poprawnie, ale wewnętrzna szerokość UIButtonu nie zmienia się, więc po zmianie z "Śledź" na "Po" tekst ulega elipsyzacji.
self.selected = self.following;
Kiedy podejść do problemu inaczej i po prostu zmienić tekst UIControlStateNormal gdy ktoś kliknie przycisk, przycisk zmienia rozmiar poprawnie.
NSString *title = (self.following) ? @"Following" : @"Follow"
[self setTitle:title forState:UIControlStateNormal];
Jest to błąd w UIKit? Spodziewam się, że przycisk zmieni swój wewnętrzny rozmiar, aby poprawnie odzwierciedlić nowy rozmiar tekstu, gdy jego stan się zmienia, szczególnie, że są inne rzeczy, które chciałbym zmienić oprócz samego tekstu dla stanów 2 przycisków.
Czy ktoś próbował tego już późno (iOS 8.2+)? Jedyne bezpośrednie rozwiązanie, które działa dla mnie to setTitle @ abdullaha: forState. Próbowałem również podążać za tą linią z layoutIfNeeded. –
aby być kompletnym i kompatybilnym z każdym systemem układu, który musiałam wykonać, wywołując setNeedsLayout i wywołując go w każdym superizycie superwizji dopóki nie będzie więcej ... wydaje się być jedynym sposobem zmiany dotyczy wszystkich rozmiarów wpływ. (jeśli są w subviewsach itp.) – Ben