Mówisz, że nie chcesz korzystać z XIB i chcą zrobić wszystko programowo.
Trzeba wdrożyć metodę initWithFrame:
:
- (id)initWithFrame:(CGRect)frame
{
if ((self = [super initWithFrame:frame])) {
// create/initialize your subviews here
self.myLabel = [[UILabel alloc] init...];
// configure the label
self.myLabel.font = ...;
self.myLabel.autoresizingMask = ...;
[self addSubview:self.myLabel];
}
return self;
}
Więc utworzyć i skonfigurować kontroli (czcionki, kolory, automatycznej zmiany masek itd.) I dodać je jako subviews, wszystko ze sposobu initWithFrame:
. Prawdopodobnie chcesz złamać kod na różne sposoby, aby zachować porządek.
Jeśli korzystasz z autouzupełniania, chcesz również utworzyć wszystkie ograniczenia z metody init.
Jeśli jesteś nie przy użyciu autolayout, powinieneś zaimplementować metodę -layoutSubviews
. To będzie nazywany w odpowiednim czasie do układu swoje subviews (np gdy rama Państwa zdanie zmianami):
- (void)layoutSubviews
{
self.myLabel.frame = ...;
}
Od sposobu layoutSubviews
można uzyskać dostęp self.bounds
aby dowiedzieć się, rozmiar widoku w tym czasie. Dzięki temu dowiesz się, ile szerokości/wysokości musisz odpowiednio wyrównać lub owinąć.
Jeśli chodzi o tworzenie instancji widoku, wystarczy użyć [[MyCustomView alloc] init]
(która będzie wywoływać initWithFrame:
z pustym rect) lub [[MyCustomView alloc] initWithFrame:...]
.Ustaw jego ramkę i dodaj ją do widoku. Metoda layoutSubviews
będzie wywoływana we wszystkich odpowiednich momentach i zostanie odpowiednio rozłożona.
To pytanie jest zbyt ogólne, aby uzyskać proste pytanie dotyczące kontroli jakości. Przejdź przez książkę powyżej, która obejmuje wszystko programowo. – bryanmac
przejść przez każdą podstawową książkę do nauki. to jest najbardziej podstawowa rzecz. – iProgrammer
@Ezimettekin Chcesz utworzyć niestandardowy widok w już istniejącej klasie lub chcesz utworzyć klasę UIView z plikiem nib – Vishnu