//
// ViewController.swift
// 疯狂ios
//
// Created by gy on 2023/1/8.
//
import UIKit
class ViewController: UIViewController {
var srcImage:UIImage!
var imageView:UIImageView!
var currentScale:Float = 1 //设置初始的缩放比例
override func viewDidLoad() {
super.viewDidLoad()
self.imageView = UIImageView.init(frame: self.view.bounds)
self.view.addSubview(imageView)
srcImage = UIImage.init(named: "bg.jpeg")
self.imageView.image = srcImage
self.imageView.isUserInteractionEnabled = true
self.imageView.isMultipleTouchEnabled = true
var gesture = UIPinchGestureRecognizer.init(target: self, action: #selector(handleTap(gesture:)))
self.imageView.addGestureRecognizer(gesture)
}
@objc
func handleTap(gesture:UIPinchGestureRecognizer){
var scale = gesture.scale
print("currentScale===",scale)
if(gesture.state == .began){
currentScale = Float(self.imageView.image!.size.width / srcImage.size.width);
print("currentScale===",currentScale)
}
let targetSize = CGSize.init(width: self.srcImage.size.width * CGFloat(currentScale) * scale, height: self.srcImage.size.height * CGFloat(currentScale) * scale);
self.imageView.image = srcImage.scaleToFitAtCenter(size: targetSize)
self.imageView.frame = CGRect.init(x: 0, y: 0, width: targetSize.width, height: targetSize.height)
}
}
oc代码
//
// OCUIViewController.m
// 疯狂ios
//
// Created by gy on 2023/1/14.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import "疯狂ios-Swift.h"
@interface OCUIViewController : UIViewController
@end
@implementation OCUIViewController
{
UIImage* srcImage;
UIImageView* imageView;
CGFloat _currentScale;
}
-(void) viewDidLoad {
//本地图片创建UIImage的两种方式
srcImage = [UIImage imageNamed:@"bg.jpeg"];
imageView = [[UIImageView alloc] initWithFrame:self.view.frame];
imageView.image = srcImage;
UIPinchGestureRecognizer* gesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[imageView addGestureRecognizer:gesture];
imageView.userInteractionEnabled = true;
imageView.multipleTouchEnabled = true;
[self.view addSubview:imageView];
}
-(void) handleTap:(UIPinchGestureRecognizer*) gesture{
NSLog(@"handleTap");
float scale = gesture.scale;
if(gesture.state == UIGestureRecognizerStateBegan){
_currentScale = ((float)(imageView.image.size.width)) / ((float)(srcImage.size.width));
}
CGSize targetSize = CGSizeMake(srcImage.size.width * scale * _currentScale, srcImage.size.height * scale * _currentScale);
imageView.frame = CGRectMake(0, 0, targetSize.width, targetSize.height);
imageView.image = [srcImage resize:targetSize];
}
@end