0

我有一个 UIImageView 元素作为我的主要 UIScrollView 元素的子视图。我希望图像始终填满整个屏幕,但我可以将边缘拖得太远,以便黄色“背景”变得可见。如果我抬起手指,图像会“弹回”并正确填满屏幕。

我想防止将图像拖出屏幕。但是,我确实希望将图像拖出“安全区域”后反弹。

这是我的 ScrollView 初始化:

- (id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:CGRectMake(0, 0, frame.size.height, frame.size.width)];
if (self) {
    [self initImageValues];

    self.showsVerticalScrollIndicator = NO;
    self.showsHorizontalScrollIndicator = NO;
    self.bouncesZoom = YES;
    self.decelerationRate = UIScrollViewDecelerationRateFast;
    self.delegate = self;
    self.backgroundColor = [UIColor yellowColor];
    self.minimumZoomScale = 1.0;
    self.maximumZoomScale = 2.0;
    [self setCanCancelContentTouches:YES];
    self.clipsToBounds = YES;

    // Load Image
    imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageName]];
    [self addSubview:imageView];

    [self setContentSize: CGSizeMake(imageView.frame.size.width, imageView.frame.size.height)];

    // Set bigger "bounce" zone (safety area)
    self.contentInset=UIEdgeInsetsMake(-SAFETY_ZONE,-SAFETY_ZONE,-SAFETY_ZONE,-SAFETY_ZONE);

    self.scrollEnabled = YES;

}
return self;}
4

4 回答 4

2

使用这些委托方法:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

然后读取偏移量,如果它超出“安全区域”,则返回。

可能是您需要 UIScrollView 中的另一个委托方法,但是这样的解决方法应该可以解决您的问题:)

于 2012-05-25T12:33:42.523 回答
0

尝试这个: **

self.scrollView.maximumZoomScale = 1.0;
self.scrollView.minimumZoomScale = 1.0;

**

于 2012-05-25T12:08:39.473 回答
0

尝试将其bounces属性设置为NO.

于 2012-05-25T12:04:15.743 回答
0

尝试在滚动视图上设置反弹:

self.bounces = NO;
于 2012-05-25T12:05:27.727 回答