在ScrollView中使用UIViewContentModeScaleAspectFit的UIImageView不是中心

时间:2015-01-18 13:23:27

标签: ios objective-c uiscrollview uiimageview uiimage

非常感谢!请帮忙!

我在UIView中有一个scrollView,在ScrollView中有一个imageView。 它们的大小相同。 这里是scrollView和imageview的日志

我没有在uiview和滚动视图之间使用autoLayout约束 以及scrollview和UIimageView

代码是:

- (void)setupScrollView
{
    CGRect frame = CGRectMake(0, 0, self.scrollViewSizeView.frame.size.width, self.scrollViewSizeView.frame.size.height);
    _colorScrollView = [[ColorScrollView alloc]initWithFrame:frame andUIImage:self.image];
    [self.scrollViewSizeView addSubview:self.colorScrollView];
}


- (instancetype)initWithFrame:(CGRect)frame andUIImage:(UIImage *)image
{
    self = [super initWithFrame:frame];
    if (self)
    {
        self.contentSize = frame.size;
        _imageView = [[ColorImageView alloc]initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)];
        self.imageView.image = image;
        [self addSubview:self.imageView];
    }
    return self;
}

滚动视图:

<ColorScrollView: 0x7fee13746dc0; baseClass = UIScrollView; frame = (0 0; 600 436); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7fee13748270>; layer = <CALayer: 0x7fee13741330>; contentOffset: {0, 0}; contentSize: {600, 436}>

ImageView的:

 <ColorImageView: 0x7fee13747e00; baseClass = UIImageView; frame = (0 0; 600 436); opaque = NO; layer = <CALayer: 0x7fee1370fc50>>

imageView内容模式是UIViewContentModeScaleAspectFit。 我希望imageView中的图像是中心。 但事实并非如此。 看起来它更喜欢保持在右侧。 很抱歉,我没有足够的声誉来发布图片:

看起来这个(*表示透明)


*****这是图像区域

*****这是图像区域

*****这是图像区域

*****这是图像区域

*****这是图像区域

2 个答案:

答案 0 :(得分:0)

我唯一想到的是在uiscrollview中添加一个uiview,然后将你的图像添加到该uiview

如果你能给我们一些你可以帮助我们的约束

答案 1 :(得分:0)

来自你对@Ali RP的回答的赞扬,&#34;如果图像的宽高比接近于imageView的宽高比。那没问题。&#34;我认为你的问题是因为UIViewContentModeScaleAspectFit。您有两个图像大小的空白区域。

<强> UIViewContentModeScaleAspectFit

  

通过保持宽高比来缩放内容以适合视图的大小。视图边界的任何剩余区域都是透明的。

它之所以没有居中的原因是因为我猜你正在使用的图像太大了,并且裁剪了部分子视图。尝试使用较小的一个和一个具有不同宽高比的调试。例如,你应该有一些宽度> gt的图像;高度和一些高度>宽度。

另见这一个: Difference between UIViewContentModeScaleAspectFit and UIViewContentModeScaleToFill?