gpt4 book ai didi

ios - 捏缩放 ScrollView 内 UIImageView 的效果?

转载 作者:技术小花猫 更新时间:2023-10-29 10:06:34 25 4
gpt4 key购买 nike

我正在使用 Storyboard (iOS 6.0) 为我的应用创建照片库查看器。这是我的 imageViewController 在 Storyboard 中的设置方式:

enter image description here

我已确保在 imageView 和 scrollView 上启用 userInteraction 和多点触控。我想要做的是,在紧要关头我想放大 imageView(最大比例为 3)并能够平移。这是我目前拥有的,但是,即使检测到捏合手势,比例也不会改变。

- (IBAction)imagePinched:(id)sender {

if (pinchRecognizer.state == UIGestureRecognizerStateEnded || pinchRecognizer.state == UIGestureRecognizerStateChanged) {

NSLog(@"gesture.scale = %f", pinchRecognizer.scale);

CGFloat currentScale = self.fullScreenView.frame.size.width / self.fullScreenView.bounds.size.width;
CGFloat newScale = currentScale * pinchRecognizer.scale;

if (newScale < 1) {
newScale = 1;
}
if (newScale > 3) {
newScale = 3;
}

CGAffineTransform transform = CGAffineTransformMakeScale(newScale, newScale);
self.fullScreenView.transform = transform;
pinchRecognizer.scale = 1;
}

}

大多数在线问题和教程都涉及以编程方式创建 View 并执行此操作,但代码越少越好(在我看来)。让它与 Storyboard 一起工作的最佳方法是什么?提前致谢!!!


更新:

这是我完整的 .m 文件代码:

- (void)viewDidLoad
{
[super viewDidLoad];

//Assign an image to this controller's imageView
fullScreenView.image = [UIImage imageNamed:imageString];

//Allows single and double tap to work
[singleTapRecognizer requireGestureRecognizerToFail: doubleTapRecognizer];
}

- (IBAction)imageTapped:(id)sender {

NSLog(@"Image Tapped.");

//On tap, fade out viewController like the twitter.app
[self dismissViewControllerAnimated:YES completion:nil];
}

- (IBAction)imageDoubleTapped:(id)sender {

NSLog(@"Image Double Tapped.");

//On double tap zoom into imageView to fill in the screen.
[fullScreenView setContentMode:UIViewContentModeScaleAspectFill];
}

- (IBAction)imagePinched:(id)sender {

if (pinchRecognizer.state == UIGestureRecognizerStateEnded || pinchRecognizer.state == UIGestureRecognizerStateChanged) {

NSLog(@"gesture.scale = %f", pinchRecognizer.scale);

CGFloat currentScale = self.fullScreenView.frame.size.width / self.fullScreenView.bounds.size.width;
CGFloat newScale = currentScale * pinchRecognizer.scale;

if (newScale < 1) {
newScale = 1;
}
if (newScale > 3) {
newScale = 3;
}

CGAffineTransform transform = CGAffineTransformMakeScale(newScale, newScale);
self.fullScreenView.transform = transform;
pinchRecognizer.scale = 1;
}
}

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.fullScreenView;
}


-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

最佳答案

我认为 Apple 文档中有更好的解决方案

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

{

return self.imageView;

}
- (void)viewDidLoad {

[super viewDidLoad];

self.scrollView.minimumZoomScale=0.5;

self.scrollView.maximumZoomScale=6.0;

self.scrollView.contentSize=CGSizeMake(1280, 960);

self.scrollView.delegate=self;

}

Check Apple Documentation

关于ios - 捏缩放 ScrollView 内 UIImageView 的效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16877807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com