iPhone UIImageView горизонтальная прокрутка в UIScrollView - Центр изображения? - PullRequest
0 голосов
/ 25 января 2012

У меня есть метод, который загружает и изменяет размер изображения в соответствии с размером экрана, чтобы соответствовать изображению во весь экран.Максимальный размер изображения (320x416).Теперь у меня есть полноэкранный UIScrollView, в котором я создаю UIImageView с initWithFrame, смещенным на X на ширину экрана, добавляя пространство UIScrollView по горизонтали.Никаких проблем, пока я устанавливаю UIImageView, созданный внутри UIScrollView [imgView setContentMode: UIViewContentModeLeft].С помощью [imgView setContentMode: UIViewContentModeCenter] он смещает изображение, каждый счетчик цикла, добавляет половину экрана вправо, поэтому я могу видеть только первое изображение, половину второго и третьего только в том случае, если я немного перешел границы scrollView.* Вот мой код, можете ли вы меня пнуть, где я что-то упустил?Спасибо.Я поместил NSLog в imgView initWithFrame: CGRectMake, но с координатами все в порядке, позиция X смещена на 320 пикселей, и тогда с imgView все в порядке.

- (void)setImages {

    int screenWidth = self.view.frame.size.width;
    int screenHeight = self.view.frame.size.height;

    // I know count of images here => imageIndex
    [mainView setContentSize:CGSizeMake(screenWidth * imageIndex, screenHeight)];

    int actualWidth = screenWidth;

    for (int index = 0; index < imageIndex; index++) {

        UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(actualWidth - screenWidth, 0, actualWidth, screenHeight)];

        ImageProcessing *impc = [[ImageProcessing alloc] init];
        UIImage *image = [UIImage imageWithData:[imagesNSDataArray objectAtIndex:index]];
        UIImage *resampled =  [impc processImageToWidthAndHeight:image :screenWidth :screenHeight];

        // [imgView setContentMode:UIViewContentModeCenter];
        [imgView setContentMode:UIViewContentModeLeft];
        imgView.image = resampled;

        [mainView addSubview:imgView];

        actualWidth = actualWidth + screenWidth;
    }
}

1 Ответ

2 голосов
/ 27 января 2012

Вы смешиваете ширину вида и горизонтальное положение.Виды не имеют одинаковую ширину - вы делаете их шире и шире.Когда вы пытаетесь отцентрировать изображение внутри вида, оно смещается, потому что изображение шире, чем вы думаете.


int viewX = 0;

for (int index = 0; index < imageCount; index++) {
    CGRect frame = CGRectMake(viewX, 0, <b>screenWidth</b>, screenHeight);
    UIImageView *imgView = [[UIImageView alloc] initWithFrame:frame];

    [...]

    viewX += screenWidth;
}
...