UIImageview не отображается после добавления в другое подпредставление, которое является UIScrollview

Я создаю контроллер представления только в коде, без .xib или раскадровки. У меня есть много других подпредставлений, добавленных в представление, которые добавляются в методе (void) loadView, а их кадры инициализируются в методе (id) init, как показано ниже.

-(id)init{ 

   bottomClinkRect = CGRectMake(playersBoardRect.origin.x + (playersBoardWidth * 0.320),
                                playersBoardRect.origin.y + playersBoardHeight - playerBottomImageRect.size.height -  (playersBoardHeight * 0.038),
                                playersBoardWidth * 0.680,
                                playersBoardHeight * 0.038);
}
- (void)loadView {

   bottomClink = [[UIScrollView alloc]initWithFrame:bottomClinkRect];
   [bottomClink setScrollEnabled:YES];
   bottomClink.contentSize = CGSizeMake(bottomClink.frame.size.height,bottomClink.frame.size.height);
   [contentView addSubview:bottomClink];
}

Я создаю пустую прокрутку, а затем, основываясь на действиях пользователя на экране, я пытаюсь добавить одно изображение за раз в прокрутку, используя следующий метод:

-(void)reloadCollections:(NSNotification *)notification
{
    UIImage *latestPieceCaptured = [gameController capturedBlackPiecesImages].lastObject;

    [whitePlayerCaptures addObject:latestPieceCaptured];

    NSInteger newNumberOfViews = whitePlayerCaptures.count;

    CGFloat xOrigin = (newNumberOfViews - 1) * bottomClink.frame.size.height;

    CGRect imageRect = CGRectMake(bottomClink.frame.origin.x + xOrigin,
                                  bottomClink.frame.origin.y,
                                  bottomClink.frame.size.height, //the width is taken from the height
                                  bottomClink.frame.size.height); // the height

    UIImageView *image = [[UIImageView alloc] initWithFrame:imageRect];
    image.backgroundColor = [UIColor blackColor];
    image.image = latestPieceCaptured;
    image.contentMode = UIViewContentModeScaleAspectFit;

    //set the scroll view content size
    bottomClink.contentSize = CGSizeMake(bottomClink.frame.size.height * newNumberOfViews,
                                         bottomClink.frame.size.height);

    [bottomClink  addSubview:image];
}

Моя проблема в том, что scrollview добавляется к основному view, но imageview (ы) не отображаются.

Я отладил его, и в scrollview добавлены подвиды, и у них есть размер кадра и все такое, но они не отображаются на экране. Я пробовал так много вариантов, но пока ничего не сработало.

Заранее спасибо за любые ссылки или советы.


person stan    schedule 10.07.2016    source источник


Ответы (1)


Это подходит для меня:

- (void)addImagesToScrollView {

    [self.scrollViewOutlet setAlwaysBounceVertical:NO];

    _scrollViewOutlet.delegate = self;

    for (int i = 0; i < thumbnailPreview.count; i++) {
        CGFloat xOrigin = i * self.scrollViewOutlet.frame.size.width;
        UIImageView *image = [[UIImageView alloc] initWithFrame:
                              CGRectMake(xOrigin, 0,
                                         self.scrollViewOutlet.frame.size.width,
                                         self.scrollViewOutlet.frame.size.height)];
        image.image = [UIImage imageNamed: [thumbnailPreview objectAtIndex:i]];

            image.contentMode = UIViewContentModeScaleAspectFill;


       image.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;


        image.clipsToBounds = YES;

        [self.scrollViewOutlet addSubview:image];
    }
    //set the scroll view content size
    self.scrollViewOutlet.contentSize = CGSizeMake(self.scrollViewOutlet.frame.size.width *
                                                   thumbnailPreview.count,
                                                   self.scrollViewOutlet.frame.size.height);

}

И назовите это

- (void)viewDidAppear:(BOOL)animated
person Alexandr Pavlov    schedule 11.07.2016
comment
Это не работает для меня! Я пробовал ваш код, но в реальном прокрутке ничего не появляется, он даже не дает мне никакой ошибки, поскольку изображения добавляются в прокрутку, но не видны - person stan; 11.07.2016
comment
также я пытаюсь добавлять туда изображения по запросу, а не при просмотре или любой начальной позиции, поэтому я добавил наблюдателя для вызова этого метода при выполнении определенных условий. - person stan; 11.07.2016
comment
Проверьте, добавляете ли вы изображения в Assets.xcassets или бандл. - person Alexandr Pavlov; 11.07.2016
comment
У меня есть изображения, и когда я ставлю точку останова в приведенной выше функции и навожу указатель мыши на изображение, а затем нажимаю значок глаза в раскрывающемся списке, я вижу фактическое изображение. - person stan; 11.07.2016