iOS将imageView添加到scrollView

时间:2016-11-09 08:52:26

标签: ios uiscrollview

enter image description here当我向scrollView添加三个imageViews时,我设置scrollView contentSize是scrollView的宽度的三倍,即使它出现在scrolView中,但是imageView的宽度不等于scrollview& #39; S。我确保已经将它们的宽度设置为每个otehr。如果谁知道如何解决这个问题,请帮助我,思考。

- (void)addScrollViewImage {
for (NSInteger index = 0; index < IMAGE_NUM; index++) {
    UIImageView *imageView = [[UIImageView alloc] init];
    CGFloat imageViewX = index * (self.scrollView.frame.size.width);
    imageView.frame = CGRectMake(imageViewX, 0, self.scrollView.frame.size.width , self.scrollView.frame.size.height);
    imageView.image = [UIImage imageNamed:@"搜索图片"];
    imageView.contentMode =  UIViewContentModeScaleAspectFill;
    [self.scrollView addSubview:imageView];
}
    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * IMAGE_NUM, self.scrollView.frame.size.height);

}

2 个答案:

答案 0 :(得分:1)

您需要更改imageview内容模式

imageView.contentMode =  UIViewContentModeScaleAspectFill;

使用

imageView.contentMode =  UIViewContentModeScaleToFill;

答案 1 :(得分:0)

这是因为在加载viewController时,仍然不知道view / scrollView框架。

您需要在其中覆盖 viewDidLayoutSubviews()设置子框架内容大小

重要说明:iOS正在为滚动指示器添加 EXTRA UIImageView。这就是为什么您不能在viewDidLayoutSubviews()中使用 scrollView.subviews.count ,但是可以使用IMAGE_NUM的原因。

一些Swift代码:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    let scrollSize = scrollView.bounds.size
    var frame = scrollView.bounds

    // Wrong: for i in 0 ..< scrollView.subviews.count
    for i in 0 ..< IMAGE_NUM {
        let view = scrollView.subviews[i]
        view.frame = frame
        frame.origin.x += scrollSize.width
    }

    scrollView.contentSize = CGSize(width: frame.origin.x, height: scrollSize.height)
}