2016-05-13 6 views
0

Vorerst ich es bin zu erreichen unter Verwendung von:bekommt tiefste (im Grunde Y) nicht nur letztes Objekt in einem UIView Subviews

UIView *subView = [[self.view subviews] lastObject] 

und dann:

CGFloat maxY = CGRectGetMaxY(subView.frame); 

Aber ich denke, es gibt einige sein müssen besser, um 100% sicher zu sein, dass das letzte Objekt tatsächlich das tiefste Objekt in der Ansichtshierarchie ist und nicht nur das letzte Objekt im Array.

+1

Die y-Position einer Ansicht in keinem Verhältnis zu ihrer Position in der Hierarchie Subview hat - was sind Sie eigentlich versuchen, es herauszufinden? – jrturton

+0

Ich möchte eine Unteransicht von UIView finden. Ich möchte maxY finden. Grundsätzlich möchte ich Höhe der übergeordneten Ansicht auf der Grundlage von Maxy Wert seiner tiefsten Unteransicht festlegen. – Alok

+1

das ist, was Auto-Layout ist für :) – jrturton

Antwort

1

Die Position im Array bezieht sich auf die z-Anordnung der Unteransichten und nicht auf ihre x- und y-Positionen.

Unter der Annahme, dass die Subviews selbst nicht Subviews, müssen Sie über das Array iterieren:

CGFloat maxY = 0; 

for (UIView *subview in self.view.subviews) { 
    maxY = MAX(CGRectGetMaxY(subview.frame),maxY); 
} 
+0

Danke, für die Zeit werde ich diesen Ansatz verwenden, um dynamische Höhe der UIView Subclass somit Zelle Content View. Es kann die UX-Leistung verringern, wenn die Darstellungstiefe tiefer ist. Ich werde am Wochenende mehr auf SystemLayoutSizeFittingSize versuchen. – Alok

Verwandte Themen