Tu dici che non si desidera utilizzare un XIB e vuole fare tutto a livello di codice.
è necessario implementare il metodo 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;
}
in modo da creare e configurare i controlli (font, i colori, il ridimensionamento automatico maschere etc.) e aggiungerli come subviews, tutto dal metodo initWithFrame:
. Probabilmente vorrai suddividere il codice in metodi diversi per mantenere le cose pulite.
Se si utilizza il rollload automatico, si desidera anche creare tutti i vincoli dal metodo init.
Se si è non utilizzando l'autolayout, è necessario implementare il metodo -layoutSubviews
. Questo sarà chiamato in tempi opportuni al layout tuoi viste secondarie (ad esempio quando il telaio di lavoro con le modifiche):
- (void)layoutSubviews
{
self.myLabel.frame = ...;
}
Dal metodo layoutSubviews
è possibile accedere self.bounds
per capire la dimensione della vista in quel momento. Questo ti permetterà di sapere quanta larghezza/altezza devi allineare o avvolgere correttamente le cose.
Quando si crea un'istanza della vista, utilizzare semplicemente [[MyCustomView alloc] init]
(che chiamerà initWithFrame:
con un rettangolo vuoto) o [[MyCustomView alloc] initWithFrame:...]
.Imposta la sua cornice e aggiungila a qualche vista. Il metodo layoutSubviews
verrà chiamato in tutti gli orari appropriati e verrà impostato di conseguenza.
fonte
2013-08-01 13:08:28
Questa domanda è troppo ampia per una semplice domanda di controllo qualità qui. Passa attraverso il libro sopra il quale copre tutto a livello di codice. – bryanmac
passa attraverso qualsiasi libro di apprendimento di base. questa è la cosa più semplice – iProgrammer
@Ezimettekin Si desidera creare una vista personalizzata nella classe già esistente o si desidera creare una classe UIView con il file pennino – Vishnu