çerçeve ayarlandığında layoutSubviews otomatik olarak bir görünümde neden çağrılmaz?

Bir manzaram var. Büyük ve karmaşık bir projenin bir parçasıdır. Görüşümün çerçevesi ayarlandığında, layoutSubviews otomatik olarak aranmaz.

Bununla uğraşırken, aşağıdaki yöntemi benim görüşüme sokmayı denedim:

-(void) setFrame: (CGRect) frame {
    NSLog (@"setting frame");
    [super setFrame: frame];
    [self setNeedsLayout];
}

Bu noktada, çerçeve beklendiği gibi düzen ayarlandığında yeniden düzenlenmiştir. Ve setNeedsLayout satırını yorumlamış olsaydım, düzen yapılmadı. Üstelik, süperin çağrıldığı satırdaki "adım" a tıkladığımda, hata ayıklayıcı hiçbir şeye adım atmaz. Anlayabildiğim kadarıyla, setFrame yöntemi geçersiz kılmıyor.

FWIW, ayrıca bir manzara çerçevesini değiştirdiğim küçük bir test projesi yaptım. Bu durumda, bunu yaptığımda layoutSubviews çağrıldı. [setNeedsLayout test projemde çağrılmadı.] Bu yüzden büyük projemdeki bir şey davranışı değiştiriyor. Ama bunun ne olduğunu bilmiyorum.

Neler olup bittiğini açıklayabilir mi?

DÜZENLEME: açıklığa kavuşturmak için çerçeve değişikliğim görünümün yüksekliğini değiştiriyor. Genişlik değişmez.

3
Sen mistik olan tek kişi değilsin. stackoverflow.com/questions/728372/…
katma yazar logancautrell, kaynak

Cevap yok

0