/ / override UIView setFrame a livello globale - iOS, Obiettivo C, Obiettivo, Categoria obiettivo C

sostituisci UIView setFrame globalmente: ios, ogg-c, uiview, ogg-c-category

Voglio assicurarmi che nessuno dei miei punti di vista lo siadisallineato e quindi vorrebbe usare CGRectIntegral durante l'impostazione del frame su tutte le uiviste. Ma non voglio farlo in modo che tutti gli sviluppatori impostino semplicemente il frame come farebbero normalmente (es. View.frame = aCGRect) e funziona magicamente. Ho provato ad aggiungere una categoria e quindi a sostituire setFrame: method for UIView ma (ovviamente!) Crea un ciclo infinito:

-(void)setFrame:(CGRect)frame{
self.frame = CGRectIntegral(frame)
}

C'è un modo migliore per farlo che aggiungere una funzione di utilità?

risposte:

1 per risposta № 1

Se è solo per lo sviluppo / diagnosi, forse potresti swizzle il metodo originale (-[UIView setFrame:]) ma chiama il metodo originale nella tua implementazione, passando il rettangolo corretto.