2009-04-22 1 views
0

Я получаю visibleRect из UIImageView внутри метода, который называется несколько раз, чтобы переместить это представление вправо. Как только он частично выходит из экрана, я ожидаю, что visibleRect станет меньше. Но это не так.Почему метод visibleRect CALayer дает мне всегда ту же ширину для моего UIImageView, даже если я перемещаю его наполовину из экрана?

-(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); 
} 

Есть ли что-то особенное, о чем я должен думать, когда мне нужен истинный видимый прямоугольник вида? На самом деле я думал, что это будет всегда обрезано супервидом, так что метод возвращает истинные размеры видимого прямоугольника.

Но когда я перемещаю UIImageView шаг за шагом вправо, он остается на уровне 300,0. Даже если часть его выходит из окна.

ответ

3

Единственное обрезание, которое изменяет видимый прямоугольник, относится к содержащему слою прокрутки.

+0

Спасибо. Интересно, почему Apple не упоминала об этом сразу, когда они говорят, что этот классный метод настолько полезен;) – Thanks

+0

У меня такая же мысль о каждом дне с яблоком;) – Alex

Смежные вопросы