Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIScrollView-防止UIImageView作为UIScrollView的子视图被拖离屏幕_Iphone_Objective C_Ios_Ipad - Fatal编程技术网

Iphone UIScrollView-防止UIImageView作为UIScrollView的子视图被拖离屏幕

Iphone UIScrollView-防止UIImageView作为UIScrollView的子视图被拖离屏幕,iphone,objective-c,ios,ipad,Iphone,Objective C,Ios,Ipad,我有一个UIImageView元素作为主UIScrollView元素的子视图。 我希望图像始终填满整个屏幕,但我可以将边缘拖得太远,使黄色“背景”变得可见。 如果我抬起手指,图像会“反弹”回来并正确填充屏幕 我想防止将图像拖离屏幕。 但是,我确实希望图像在我将其拖出“安全区域”后反弹回来 这是我的ScrollView初始化: - (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:CGRectMake(0, 0, frame.

我有一个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;}

尝试将其
反弹
属性设置为

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

self.bounces = NO;
试试这个: **


**使用以下委托方法:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
然后读取偏移量,如果超出“安全区域”,则返回


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

好的,旋转反弹可以解决问题。但当我离开图像的“安全区域”时,我想要一点点的反弹。我只是不想把图像拖得太远,以至于它会离开屏幕的一部分。我希望当我离开图像的“安全区域”时,图像会反弹。我只是不想“反弹”那么大,我可以把图像拖离屏幕。那不行。我不确定,当拖动图像时,图像的比例如何影响“反弹”。用这种方法也无法缩放图像。这正是我所缺少的。我现在已经包括了一些如果,检查图像是否会离开屏幕,然后设置图像位置,使图像刚好在屏幕上。另外,反弹仍然有效。太好了,谢谢!
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView