Почему метод visibleRect CALayer всегда дает мне одинаковую ширину для моего UIImageView, даже если я перемещаю его наполовину из экрана? - PullRequest
0 голосов
/ 22 апреля 2009

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

-(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. Даже если часть его выходит из окна.

1 Ответ

3 голосов
/ 22 апреля 2009

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

...