UIImageview在添加到UIScrollview的另一个子视图后没有显示

时间:2016-07-10 21:21:11

标签: ios objective-c uiscrollview uiimageview addsubview

我只在代码中创建一个视图控制器,NO .xib或storyboard。 我在视图中添加了许多其他子视图,它们被添加到方法(void)loadView中,并且它们的帧在(id)init方法中初始化,如下所示

    Canvas canvas;

    Bitmap star = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
    Bitmap output = Bitmap.createBitmap(star.getWidth(), star.getHeight(), Bitmap.Config.ARGB_8888);
    canvas  = new Canvas(output); 
    Rect source = new Rect(0, 0, star.getWidth(), star.getHeight());
    canvas.drawBitmap(star, null, source, null);    
    imgView.setImageBitmap(output);  

我创建空的scrollview,然后根据屏幕上的用户操作,我尝试使用以下方法每次向scrollview添加一个imageView:

-(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(s)未显示。

我调试了它,imageview添加了子视图,它们具有帧大小和全部,但没有显示在屏幕上。我尝试了很多变化,但到目前为止还没有任何工作。

提前感谢任何链接或建议。

1 个答案:

答案 0 :(得分: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