虽然contentSize小于UIImageView,但UIScrollView不滚动

时间:2012-01-17 04:34:15

标签: iphone objective-c ios ipad uiscrollview

所以我有一个UIImageView作为UIScrollView的子视图,我将contentSize设置为小于UIImageView宽度和高度,但它没有'我允许滚动..这是为什么?这是一些代码:

UIImage * image = [UIImage imageWithData:data];
                UIImageView * imgView = [[UIImageView alloc] initWithImage:image];
                [imgView setUserInteractionEnabled:YES];
                //[imgView setContentMode:UIViewContentModeScaleAspectFill];
                [imgView setBackgroundColor:[UIColor clearColor]];
                [imgView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
                [imgView setFrame:CGRectMake(0, 0, imgView.frame.size.width, imgView.frame.size.height)];

                CGRect imgFrame;
                imgFrame.size.width = originalImageSize.width;
                imgFrame.size.height = originalImageSize.height;
                imgFrame.origin.x = imageOriginPoint.x;
                imgFrame.origin.y = imageOriginPoint.y;

                UIScrollView * imgScrollView = [[UIScrollView alloc] initWithFrame:imgFrame];
                [imgScrollView setScrollEnabled:YES];
                [imgScrollView setClipsToBounds:YES];
                [imgScrollView addSubview:imgView];
                [imgScrollView setBackgroundColor:[UIColor clearColor]];


  [imgScrollView setFrame:imgFrame];
                [imgScrollView setContentSize:CGSizeMake(200, 200)];

SCROLL VIEW CONTENT SIZE WIDTH IS 200.000000 AND HEIGHT CONTENT SIZE IS 200.000000
UIIMAGE VIEW WIDTH IS 2240.225830 AND HEIGHT IS 2240.225830
SCROLL VIEW FRAME WIDTH IS 768.000000 AND SCROLL VIEW FRAME HEIGHT IS 768.000061

有什么想法吗?

5 个答案:

答案 0 :(得分:11)

这是因为滚动视图的边界大小大于内容大小。 内容大小需要是图像视图的实际大小,可见大小由帧/边界设置。我想你想在{200,200}大小的矩形中滚动图像? 试试这个:

        UIScrollView * imgScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)]; // this is your visible rect
        [imgScrollView setScrollEnabled:YES];
        [imgScrollView setClipsToBounds:YES];
        [imgScrollView addSubview:imgView];
        [imgScrollView setBackgroundColor:[UIColor yellowColor]];

        [imgScrollView setContentSize:imgFrame.size]; // this is your image view size

答案 1 :(得分:5)

我知道这已经过时了,但我想指出,当您在代码中创建UIScrollView时,最重要的事情是:

scrollView.scrollEnabled = YES;

如果您未设置,contentSize无关紧要。

答案 2 :(得分:4)

执行此操作的方法是始终将contentSize设置为大于视图大小。但是Swift中有一个属性允许滚动视图始终“滚动”而不管内容大小如何:

scrollView.alwaysBounceVertical = true

还有一个用于水平滚动

答案 3 :(得分:0)

滚动视图的内容大小应该大于scrollView框架的宽度和高度
这样做 -

    scrollView.contentSize = CGSizeMake(originalImageSize.width,originalImageSize.height);

我认为这会有所帮助。

答案 4 :(得分:0)

如果您尝试使用IB进行设置,请确保将UIScrollView的高度属性设置为低于contentView的高度属性。例如,如果您已将contentView的高度设置为810分,请务必将UIScrollView的高度设置为610分左右。

相关问题