2012-04-03 7 views
1

Ich habe eine Anwendung, in der ich eine scrollView-Zoomfunktion verwende, um das Bild auf ein Rechteck mit festem Seitenverhältnis zu beschneiden. Ich habe eine Maske, in der ich die Teile des Bildes, die beschnitten werden, verdunkle. Derzeit füge ich diese Subview dem UIScrollView-Elternteil hinzu und mache sie zu Geschwistern, wobei diese Maske 'höher' als die Scrollview ist. Sieht großartig aus. Außer ...Wie kann ich eine nicht-scrollende UIView unter den Scroll-Indikatoren auf einem UIScrollView platzieren?

Diese Maske maskiert auch die scrollIndicators und sieht daher ein bisschen dumm. Ich könnte die scrollIndicators ausschalten, oder, idealerweise, würde ich diese UIView unter den scrollIndicators platzieren, aber nicht mit anderen Inhalten scrollen, was passieren würde, wenn ich eine Unteransicht des scrollview über [scrollView addSubview: myMaskView];

Wer weiß, ob das möglich ist?

Antwort

0

Zuerst Unterklasse UIScrollView, damit Sie das Standardverhalten der Bildlaufansicht ändern können.

Erstellen Sie zweitens eine Bildansicht mit Ihrem Bild, und fügen Sie sowohl die Bildansicht als auch Ihre Maskenansicht in eine Bildlaufansicht ein. Auf diese Weise werden Ihre Ansichten unter dem Bildlaufanzeiger angezeigt.

Drittens, geben Sie in Ihrer Bildlauf-Delegate-Methode viewForZoomingInScrollView: Ihre Bildansicht zurück, sodass nur die Bildansicht vergrößert wird. Beachten Sie, dass die Scroll-Ansicht, welche die Inhaltsgröße anpassen wird die Größe der zurückgegebenen Ansicht sein, aber es ist in Ordnung, solange Ihre Bildansicht, die die gesamte Inhalt Größe in Anspruch nimmt.

Und zuletzt, override layoutSubviews Methode, verschieben Sie die Maskenansicht zu sichtbaren Grenzen der Bildlaufansicht. Die layoutSubviews-Methode soll jeden Bildlauf aufrufen, damit die Positionsänderung für den Endbenutzer nicht sichtbar ist.

Für weitere Informationen können Sie WWDC Session Video "Advanced Scroll Techniques" beziehen.

EDIT: OK, nur festgestellt, dass Sie layoutSubviews durch die Umsetzung des Delegatmethode scrollViewDidScroll zwingende vermeiden können.

Verwandte Themen