2009-04-22 7 views
0

Ich bekomme das visibleRect von einer UIImageView innerhalb einer Methode, die mehrmals aufgerufen wird, um diese Ansicht nach rechts zu verschieben. Sobald es teilweise aus dem Bildschirm geht, erwarte ich, dass der visibleRect kleiner wird. Aber das tut es nicht.Warum gibt mir die visibleRect-Methode von CALayer immer die gleiche Breite für meine UIImageView, auch wenn ich sie halb aus dem Bildschirm ziehe?

-(IBAction)moveToRight:(id)sender { 
    CGRect frameRect = myUIImageView.frame; //that's an image I use in background of other views 
    CALayer *myLayer = [myUIImageView layer]; 
    CGRect visRect = [myLayer visibleRect]; 

    NSLog(@"%f, %f", visRect.origin.x, visRect.size.width); //width is always 300.0 

    CGPoint rectPoint = frameRect.origin; 
    CGFloat newXPos = rectPoint.x + 10.5f; 
    myUIImageView.frame = CGRectMake(newXPos, 0.0f, myUIImageView.frame.size.width, myUIImageView.frame.size.height); 
} 

Gibt es etwas Besonderes, über das ich nachdenken muss, wenn ich das wirklich sichtbare Rectangle einer Ansicht brauche? Eigentlich dachte ich, dass es immer von der Superansicht abgeschnitten wird, so dass die Methode die wahren sichtbaren Rechteckdimensionen zurückgibt.

Aber wie ich das UIImageView Schritt für Schritt nach rechts verschiebe, bleibt es bei 300,0 Breite. Auch wenn ein Teil davon aus dem Fenster verschwindet.

Antwort

3

Der einzige Ausschnitt, der das sichtbare Rect ändert, stammt von einem enthaltenden Scroll-Layer.

+0

Danke. Ich frage mich, warum Apple es nicht sofort erwähnt hat, wo sie sagen, dass diese coole Methode so nützlich ist;) – Thanks

+0

Ich habe denselben Gedanken über jeden Tag mit Apfel;) – Alex