2012-04-10 12 views
2

Ich habe zwei Scroll-Ansichten nebeneinander und sie können einzeln gezoomt werden. Ich habe dies getan, indem ich meine Ansicht in eine Bildlaufansicht gebracht und die Zoomskala für die Bildlaufansichten festgelegt habe. Bis jetzt funktioniert es gut! Jetzt gibt es eine neue Anforderung, die zwei Bilder zusammen zu zoomen, so dass, wenn ich ein Bild zoome, der andere automatisch mit der gleichen Zoomskala gezoomt wird. Mir wurde die roambi app als Referenz gegeben, in der zwei scrollviews zusammen gescrollt werden können, durch Scrollen von einem von ihnen für Bequemlichkeit während des Vergleichs. Im Grunde ist das, was ich mache, auch ein Vergleich zwischen den beiden Ansichten. Ich habe die Delegiertenmethoden von scrollview durchlaufen, konnte jedoch nicht die erforderlichen Ergebnisse erzielen. Wie mache ich das?Wie zoomen Sie zwei nebeneinander liegende Bilder zusammen?

Antwort

0

Ich hatte vor einiger Zeit etwas Ähnliches implementiert (ich habe es für Buttons gemacht). Dies ist, wie ich es tat:

Nehmen Sie zwei UIScrollView s und auf sie verweisen (ich habe firstScrollView und secondScrollView verwendet)

Nehmen Sie zwei UIButton s und auf sie verweisen (ich habe firstImgBtn und secondImgBtn verwendet). Stellen Sie die Delegierten zu den beiden scrollviews und verwenden Sie die folgenden Delegatmethoden:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ 
    //return the respective button in the scrollview to be zoomed 
    if(scrollView==firstScrollView){ 
     return firstImgBtn; 
    } 
    else{ 
     return secondImgBtn; 
    } 
} 

- (void)scrollViewDidZoom:(UIScrollView *)scrollView{ 
    // zoom in the other scrollview when one has zoomed 
    if(zoomTogether){//a bool to decide whether to zoom the two together or not 
     if(scrollView==firstScrollView){ 
      secondScrollView.zoomScale = firstScrollView.zoomScale; 
     } 
     else{ 
      firstScrollView.zoomScale = secondScrollView.zoomScale; 
     } 
    } 
} 

Dies kann zu einer Unterklasse von UIView -in Ihrem Fall angewendet werden, es wird UIImageView s

+0

Eigentlich benutze ich selbst UIButtons. Ich werde es versuchen ... –

+0

Es hat funktioniert ... danke –

1

Ich habe das nie getan, Aber von Anfang an würde ich sagen, dass Sie zuerst das Zoomen in beiden von ihnen erreichen müssen (wie oben), dann müssen Sie die Delegate-Methoden verwenden, um sicherzustellen, dass beide Scroll-Ansichten gleich sind contentOffset-Wert Das heißt, wenn man über manuelles Scrollen oder über programmatisches Scrollen wechselt, muss man (unter Verwendung der Delegaten-Callbacks) das andere auf denselben contentOffset-Wert setzen.

EDIT: Wie pro Anfrage, das Hinzufügen ein wenig (UNTESTED) Code:

- (void)scrollViewDidScroll:(UIScrollView*)scrollView 
{ 
    if(scrollView == self.myFirstScroller) 
    { 
    self.mySecondScroller.contentOffset = self.myFirstScroller.contentOffset; 
    } 
    else { 
    self.myFirstScroller.contentOffset = self.mySecondScroller.contentOffset; 
    } 
} 

und Zoomen, auf die oben in ähnlicher Weise durchgeführt.

Aber wenn Sie nach einer Kopier-Paste-Lösung suchen, können Sie einfach in Ihr Projekt einsteigen. Ich fürchte, Sie müssen sich selbst etwas mehr über Scroll-Ansichten beibringen. Sie sollten den Apple Programming Guide lesen, da scrollviews etwas knifflig sein können und Sie oft einige der Delegate-Methoden verwenden müssen, um die Dinge richtig zu machen.

+0

Könntest du bitte einen Code dafür schreiben ... –