uiscrollview zoom-in und zoom-out funktioniert nicht richtig
Ich habe eine uiscrollview und es ist ein uiimageview drin. Ich will die verwendet werden können, um den zoom aus dem Bild heraus, da es ein großes Bild. die scrollview muss nur vertikal scrollen, nicht horizontal.
bevor man den Zoom-Effekt hatte ich den folgenden code und es funktionierte, wie ich wollte,
-(void)viewDidLoad
{
[scrollView setScrollEnabled:YES];
[scrollView setContentSize:CGSizeMake(320, 1690)];
}
Also recherchierte ich und landete mit dem folgenden code zu aktivieren pinch-zoom in und out,
-(void)viewDidLoad
{
scrollView.scrollEnabled = YES;
[scrollView setContentSize:CGSizeMake(320, 1690)];
scrollView.delegate = self;
// scrollView.contentSize = instImage.frame.size;
scrollView.minimumZoomScale = scrollView.frame.size.width / instImage.frame.size.width;
scrollView.maximumZoomScale = 2.0;
[scrollView setZoomScale:scrollView.minimumZoomScale];
[[NSRunLoop currentRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate distantFuture]];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return instImage;
}
- (CGRect)centeredFrameForScrollView:(UIScrollView *)scroll andUIView:(UIView *)rView {
CGSize boundsSize = scroll.bounds.size;
CGRect frameToCenter = rView.frame;
//center horizontally
if (frameToCenter.size.width < boundsSize.width) {
frameToCenter.origin.x = ((boundsSize.width - frameToCenter.size.width) / 2);
}else {
frameToCenter.origin.x = 0;
}
return frameToCenter;
}
- (void)scrollViewDidZoom:(UIScrollView *)scrollV {
instImage.frame = [self centeredFrameForScrollView:scrollV andUIView:instImage];;
}
Nun habe ich folgende Probleme und ich kann nicht herausfinden, was falsch ist,
-
wenn die Ansicht geladen, bevor alle Klemmen Sie die scrollview nicht scrollen Sie ganz an das Ende des Bildes.
-
als kniff, um es zu vergrößern, es scrollt nach Links und rechts und oben und unten das Bild, aber noch ist es nicht scroll ganz runter an das Ende des Bildes, aber immer noch mehr als das, was es ursprünglich zu Beginn.
-
wenn ich verkleinern, das ganze Stoppt. Sie können nicht vergrößern oder verkleinern, es gar nicht mehr scrollen. völlig gesperrt.
Habe ich einige reseach und fand den folgenden Beitrag.
https://stackoverflow.com/a/6384834/1103257
aber ich weiß nicht, wo würde ich finden NSDefaultRunLoopMode oder sogar, wie die Suche für Sie, um herauszufinden, ob dieser Sie lösen kann oder nicht.
InformationsquelleAutor Mona | 2012-02-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es endlich. Diese Lösung funktioniert perfekt!
in Ihr .h-Datei
und verbinden Sie einfach das Bild auf der uiimageview, hat das Foto, das Sie vergrößern möchten, in die und aus und ist im inneren des scrollview. dann verbinden Sie den scrollview, um Ihre uiscrollview auf Ihre Schnittstelle.
in Ihr .m-Datei
hoffe, das hilft.
InformationsquelleAutor Mona
Hier ist, wie ich das implementieren einer scroll-Ansicht zu scrollen, um ein großes Bild in viewDidLoad
Dann habe ich auch die viewForZoomingInScrollView Methode:
Du scrollViewDidZoom Funktion ist unnötig an dieser Stelle. Ich implementieren etwas ähnliches zu halten das Bild zentriert, wenn das gesamte Bild ist sichtbar, aber jetzt würde ich nicht befürchten, dass, wenn ich Sie wäre.
Nur um sicher zu gehen, arbeiten Sie in iOS 5? Und Ihre view-controller ist ein Delegat, der <UIScrollViewDelegate>?
ja, auf beide Fragen
Wenn Sie versuchen, die Implementierung, die ich oben aufgeführt) was ist das Verhalten?
InformationsquelleAutor atreat
Gleiche Problem, bekam aber eine einfache Lösung, einfach das Bild anzeigen, um Benutzer-Interaktion aktiviert:
InformationsquelleAutor Kjuly
Das Problem für mich war, ich war mit auto-layout und es war nicht die Einstellung der zoom-Delegierter für die UIScrollView. Ich war mit einer benutzerdefinierten UIViewController auch das war ein UIScrollViewDelegate. Ich fand Sie entweder in der code-set der Delegierten:
Oder in der storyboard-set das delegieren wählen Sie die UIScrolView und in den connections inspector ziehen Sie den Delegierten zu zeigen, um die UIViewController.
InformationsquelleAutor Howard Lovatt