0

有一张UITableView有很多照片的。当一张照片被点击时,amodalView会显示UIScrollView,其中还UIImageView嵌入了一个。此处显示点击的图像(类似于 Facebook 应用程序)。touchesMoved现在,我可以使用和垂直移动图像CGRectMake。我想要实现的是,当我垂直拖动图像时,达到某个阈值时,ImageView 和 ScrollView 应该消失,我们应该回到 tableView。

图像移动使用:

- (void) touchesMoved:(NSSet *)touches
        withEvent:(UIEvent *)event {
    UITouch * touch = [touches anyObject];
    CGPoint pos = [touch locationInView: [UIApplication sharedApplication].keyWindow];
    NSLog(@"%f", pos.y);

if (pos.y>50&&pos.y<430){
    [UIView setAnimationDelay:0];

    [UIView animateWithDuration:0.4

                     animations:^{_photoImageView.frame=CGRectMake(0,pos.y-100,320,200);}

                     completion:^(BOOL finished){ }];
}
}

此处需要将控制权返回给 tableView 的操作:

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

UITouch * touch = [touches anyObject];
CGPoint pos = [touch locationInView: [UIApplication sharedApplication].keyWindow];

if (pos.y>50&&pos.y<430){
    [UIView setAnimationDelay:0];

    [UIView animateWithDuration:0.4

                     animations:^{_photoImageView.frame=CGRectMake(0,140,320,200);}

                     completion:^(BOOL finished){ }];
}
else if(pos.y<50||pos.y>430)
    //Code needed here !!
    ;
}

此外,如果可以在imageView背景(即滚动视图)上实现透明度,使得表格视图在某些 Alpha 下可见,那将是非常受欢迎的。

4

1 回答 1

0

Dismiss with dismissModalViewControllerAnimated:(应该使用较新的方法dismissViewControllerAnimated:completion:)。

(这是假设您使用 呈现presentModalViewController:animated:,只是向屏幕添加视图不是模态呈现)。如果您没有真正呈现模态,那么只需使用removeFromSuperview.

当以模态方式呈现视图时,下面的视图将从显示中移除(预计不可见),因此如果您使模态视图透明,您只会在其下方看到黑色。如果您想让覆盖视图透明,您只需将其设为子视图,设置不透明度(alpha)并使用bringSubviewToFront:.

于 2013-04-30T08:08:36.057 回答