UIScrollview Größe des Inhalts, wenn sich die Orientierung ändert
Ich habe eine scrollview mit Paginierung. In der viewDidLoad Stelle ich fest, ob die aktuelle Ausrichtung ist die Landschaft dann setze ich seine contentsize Höhe 440
if (UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]))
{
[scroll setContentSize:CGSizeMake(self.scroll.frame.size.width*numberOfPages,340)];
}
else if (UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation]))
{
[scroll setFrame:CGRectMake(0,0,480,480)];
[scroll setContentSize:CGSizeMake(self.scroll.frame.size.width*numberOfPages, 440)];
}
funktioniert alles einwandfrei scrollview scrollt smoothy und es gibt keine diagonal scrollen.
aber wenn die Ausrichtung ändert,
habe ich scrollview-Rahmen und-contentsize wieder und ich bin Einstellung, die Sie als Folgen
-(void)orientationChanged:(id)object
{
if(UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]))
{
self.scroll.frame = [[UIScreen mainScreen]bounds];
[scroll setContentSize:CGSizeMake(self.scroll.frame.size.width*numberOfPages, 340)];
}
else
{
self.scroll.frame = CGRectMake(0,0,480,480);
[scroll setContentSize:CGSizeMake(self.scroll.frame.size.width*numberOfPages, 600)];
}
}
kann ich nicht verstehen, warum ich die set-Inhalt Größe ist die Höhe, bis zu 600 in den landscape-Modus, und das auch noch nicht genug. und er fügt noch ein problem, dass scrollview startet scrollen Diagonal, die ich nicht wollen, da sieht es so komisch. Kann mir jemand helfen zu verstehen, wo und was ich bin fehlt?
habe ich scrollview ist autoresizing Maske als
[scroll setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleHeight];
aber ändern es nicht helfen.
Ich glaube, Sie brauchen nicht zu ändern, die contentsize jedes mal, wenn die Ausrichtung ändert. Sie brauchen nur zu ändern, nur der Rahmen Größe.Auch wenn Sie mit autoresizing , die Sie nicht brauchen, es auch zu tun.
[scroll setAutoresizingMask:UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth]; versuchen, wie diese
Ich habe seinen Inhalt Größe wie ich sagte, wenn ich nicht zu erhöhen meine contentsize Höhe 600 oder mehr bei der Orientierung, änderungen der Landschaft, ich bin nicht in der Lage, um einen Bildlauf vertikal und siehe Inhalt unten in der scroll-view s-frame. Und ich kann nicht geben scrollview flexible Breite, da ich die Paginierung,wodurch flexible Breite bewirkt, dass die Seiten überlappen einander cuz scrollview erstreckt sich auf beiden Seiten geben, wenn Sie flexible Breite. Das ist, warum ich bin Einstellung scrollview Rahmen everytime Orientierung ändert
InformationsquelleAutor Vishal Singh | 2012-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist es ein problem in deinem code. Warum sind Sie die Bildgröße so???? Sie haben nur die Display-Größe von
320px width
. Und wenn es änderungen anlandscape
Höhe wird nur320px
. Aber Sie sind einstellen des textdurchlaufsheight
als480px
und esgoes out of the screen
undstart to scroll diagonally
.Statt, die frame-Größe, ändern, wie dieser
Und Sie müssen die Inhalt Größe hängt von der Inhalt Sie, dass Sie innerhalb der scroll-view in jeder Orientierung.
InformationsquelleAutor Dinesh Raja
Nicht verwenden
UIDeviceOrientation
. VerwendenUIInterfaceOrientation
statt.DeviceOrientation
hat zwei zusätzliche Optionen, die Sie brauchen nicht hier. (UIDeviceOrientationFaceUp
undUIDeviceOrientationFaceDown
)Zurück
Yes
ausshouldAutorotateToInterfaceOrientation
Nun
willRotateToInterfaceOrientation: duration:
wird jedesmal aufgerufen, wenn Sie Ihr Gerät drehen.Implementieren Sie diese Methode, wie diese.
Lassen,
pageNumber = 2
statusBarHeight = 20
ist jetzt veraltet. Es war ein
UIViewController's
Methode. VerwendenshouldAutorotate
undsupportedInterfaceOrientations
statt.InformationsquelleAutor Warif Akhand Rishi