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 möchte nur verhindern, dass mein scrollview diagonal scrolling-problem i dont care über andere Problem , i dont care, wenn ich Ihnen Inhalt, Höhe 1000. Aber ich möchte den Grund verstehen, der dahinter steht. Diagonal scrollen tritt nur auf, wenn die Ansicht ändert seine Ausrichtung auf Querformat, wenn es bereits vorhanden ist. Es wird nicht auftreten, wenn die Ansicht angezeigt wird, zum ersten mal selbst im landscape-Modus nur.
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

Schreibe einen Kommentar