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

所以我有一个UIImageView作为UIScrollView的子视图,我已经设置contentSizeUIImageView宽度和高度,但是它不允许我滚动..这是为什么? 这是一些代码:

 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 

任何想法?

这是因为你的滚动视图边界的大小大于你的内容大小。 内容大小需要是图像视图的实际大小,可见大小由帧/边界设置。 我想你想滚动一个图像在一个{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 

我知道这是旧的,但我想指出,当你在代码中创build一个UIScrollView设置最重要的是:

scrollView.scrollEnabled = YES;

如果你没有设置,你的contentSize是不相关的。

这样做的方式很简单,就是始终将contentSize设置为大于视图大小。 但是在Swift中有一个属性允许scrollview始终“滚动”,而不pipe内容大小如何:

 scrollView.alwaysBounceVertical = true 

还有一个水平滚动以及

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

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

我认为这会有所帮助。

如果您正在尝试使用IB设置,请确保您的UIScrollView的Height属性设置为比contentView的Height属性更低的数字。 例如,如果你已经将contentView的高度设置为810点,那么一定要将你的UIScrollView的高度设置为610点左右。