ios - intestazione - meta for google



Modo corretto per implementare updateConstraints (1)

Quale parte dei miei vincoli dovrei aggiornare nel metodo updateConstraints? Devo aggiornare tutti i vincoli relativi alla mia sottoclasse? Nella mia sottoclasse UIView di solito aggiungo una serie di vincoli relativi solo alle sottoview definite in questa sottoclasse.

@property(nonatomic, strong) NSArray *subclassConstraints;

- (void)updateConstraints {
 [self removeConstraints:self.subclassConstraints];
 self.subclassConstraints = [self createConstraints];
 [self addConstraints:self.subclassConstraints];
 [super updateConstraints];
}

Quindi, non ci saranno collisioni tra i miei vincoli, i vincoli di super classe o i vincoli di sottoclasse.

La domanda è: devo aggiornare tutti i self.subclassConstraints? O dovrei aggiornare solo i vincoli che potrebbero essere errati dopo alcune azioni?

Se c'è qualche proprietà di visualizzazione, e qualcuno può ripristinarli o assegnare zero, penso che tutti i vincoli relativi saranno errati, quindi dovrei aggiornare i vincoli di quella vista in ogni chiamata - (void)updateConstraints .

fe

@property (nonatomic, strong) UIImageView *imageSubview;


- (void)setImageSubview:(UIImageView *)imageView {
    if (![_imageView isEqual:imageView]) {
        _imageView = imageView;
        [self setNeedUpdateConstraints];
    }
}

- (void)updateConstraints {
    [self removeConstraints:self.imageViewConstraints];
    self.imageViewConstraints = [self createImageViewConstraints];
    [self addConstraints:self.imageViewConstraints];
    [super updateConstraints];
}

Quindi dovrei aggiornare tutti i miei vincoli nel metodo updateConstraints? O dovrei aggiornare solo alcuni di essi (ad esempio imageViewConstraints)

https://ffff65535.com


In definitiva, dipenderà dal modo in cui le visualizzazioni vengono posizionate utilizzando l'autolayout e quali vincoli causeranno conflitti / s quando la sottoview viene modificata. Cambierà caso per caso.

Prendi sempre nota di come il tuo layout è interessato nel suo insieme per ogni caso limite e non solo per la singola vista che è cambiata. A volte solo i vincoli della sottoview devono cambiare come nel tuo esempio. Tuttavia, ci sono anche momenti in cui è necessario aggiornare anche i vincoli per l'intero layout.

Se puoi, è sempre più efficiente modificare solo i vincoli necessari per rendere valido il tuo layout perché stai riutilizzando i vincoli esistenti invece di crearne di nuovi. E per cambiamento, non intendo necessariamente solo distruggere e ricreare i vincoli. Se puoi, modifica semplicemente il valore costante dei vincoli necessari per rendere valido il tuo layout.





nslayoutconstraint