2016-10-01 7 views
1

Ich möchte ein nicht Kind UIView in einem UIView verstecken, aber ich weiß nicht, wie es geht.Verstecken nicht Kind UIView in UIView

Um genau zu sein, ich habe eine UITableView. Jedes UITableViewCell hat eine andere Ansicht darin (eine Wrapperansicht, die wrapperView genannt wird). Der Wrapper hat einige Etiketten in IB und einige programmatisch erstellt. Ich habe einen benutzerdefinierten Slide-Mechanismus erstellt, der Schaltflächen unter dem Wrapper enthüllt (wie der Standard).

Die programmatisch erstellten Labels überschreiten nicht die Grenzen des Wrappers, da sie die Subviews abschneiden. Das Problem liegt bei den Labels, die in IB erstellt wurden. Sie sind die Unteransichten von contentView.

Wie kann das gelöst werden? Gibt es eine Möglichkeit für eine UIView andere Ansichten auf der gleichen Ebene (nicht Eltern oder Kinder) zu klammern? Oder "transferieren" Sie die Etiketten in die Wrapper-Ansicht?

+0

"Gibt es eine Möglichkeit für einen UIView, Geschwisteransichten zu klammern" Nein. Organisieren Sie Ihre Ansichten besser, damit es so funktioniert, wie Sie möchten. In Bezug auf die "programmatisch erstellten Labels" ist Ihr Problem unglaublich einfach - Sie sollten diese zu einem Kind der anderen UIView machen - so einfach ist das. – Fattie

Antwort

2

Es ist nicht ganz klar, was Sie fragen. In einer Ansicht werden nur die Unteransichten abgeschnitten, keine Ansichten, die zufällig in das Rahmenrechteck fallen, aber keine Unteransichten sind.

Wenn Sie ein View-Objekt von einer View-Hierarchie in eine andere verschieben möchten, können Sie dazu addSubview(_:) verwenden. Dadurch wird es automatisch aus der aktuellen übergeordneten Ansicht entfernt. Um die Apple Docs zu zitieren:

Ansichten können nur eine Superview haben. Wenn die Ansicht bereits eine Superansicht hat und diese Ansicht nicht der Empfänger ist, entfernt diese Methode die vorherige Superview, bevor der Empfänger seine neue Superview erstellt.

+0

Meine Vermutung ist die OP einfach nicht zu verstehen, dass, wenn Sie eine Ansicht "programmgesteuert" machen, können Sie natürlich die Eltern, Superview, dieser neuen Ansicht. – Fattie

+0

Ich verstehe sehr klar die Konzepte und ich weiß, dass eine Ansicht ihre Subviews abschneidet. Ich habe nach einer Methode gefragt, mit der andere Ansichten abgeschnitten werden können, bei denen es sich nicht um Unteransichten handelt. Danke für deine Antwort, Duncan! Es funktioniert perfekt. – Lawrence413