objective-c – CGAffineTransformMakeScale使UIView在缩放之前跳转到原始大小

objective-c – CGAffineTransformMakeScale使UIView在缩放之前跳转到原始大小,第1张

概述我有一个UIView,我设置来响应捏捏手势和改变它的大小,除了,一旦你放大,然后再试一次,它跳转到原来的大小(这恰好是100×200).这是代码: @implementation ChartAxisView- (id)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { // 我有一个UIVIEw,我设置来响应捏捏手势和改变它的大小,除了,一旦你放大,然后再试一次,它跳转到原来的大小(这恰好是100×200).这是代码:

@implementation ChartAxisVIEw- (ID)initWithFrame:(CGRect)frame {    if ((self = [super initWithFrame:frame])) {        // do gesture recognizers        UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(onPinch:)];         [self addGestureRecognizer:pinch];         [pinch release];    }    return self;}- (voID)drawRect:(CGRect)rect {    CGContextRef context = UIGraphicsGetCurrentContext();    CGcolorRef redcolor = [UIcolor colorWithRed:1.0 green:0.0 blue:0.0 Alpha:1.0].CGcolor;    CGContextSetFillcolorWithcolor(context,redcolor);    CGContextFillRect(context,self.bounds);}- (voID)onPinch: (UIPinchGestureRecognizer*) gesture {      self.transform = CGAffinetransformMakeScale(gesture.scale,gesture.scale);}- (voID)dealloc {    [super dealloc];}@end

有什么想法吗?

解决方法 所以有两种类型的Scale(或者一般的变换)函数: CGAffineTransformMakeScale和 CGAffineTransformScale

第一个,您正在使用的CGAffinetransformMakeScale,总是相对于图像的原始大小进行转换.这就是为什么你在缩放发生之前看到跳转到原来的大小.

第二个,CGAffinetransformScale从图像的当前位置转换.这就是你所需要的.为此,它需要一个额外的“转换”参数.您的案例中的“变换”参数表示放大的图像.

阅读this非常翔实的博客文章转换.

总结

以上是内存溢出为你收集整理的objective-c – CGAffineTransformMakeScale使UIView在缩放之前跳转到原始大小全部内容,希望文章能够帮你解决objective-c – CGAffineTransformMakeScale使UIView在缩放之前跳转到原始大小所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1085085.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存