aka*_*aru 9 objective-c rect cgaffinetransform ios cgrect
我想模仿视图中的"放大".较大的视图将作为子视图添加到较小视图的超视图中,较大的视图应该看起来好像从较小的视图放大.给定较小视图的矩形fromRect和放大的视图的最终帧,finalRect适当的变换是什么?

我想方法签名就像下面这样,view作为superview.我写这篇文章来帮助自己,但还是想不出来.
-(CGAffineTransform) translatedAndScaledTransformUsingViewRect:(CGRect)viewRect fromRect:(CGRect)fromRect inView:(UIView*) view
{
//calculate the scaling based on the final frame of viewToBeStretched (viewRect) vs the "fromRect"
CGFloat scaleX = ?, scaleY = ?;
CGAffineTransform scaleTransform = CGAffineTransformMakeScale(scaleX, scaleY);
//use translation instead of modifying the view's center, since frame changes with transforms are no good
CGFloat translationX = ?, translationY =?;
CGAffineTransform translationTransform = CGAffineTransformMakeTranslation(translationX, translationY);
CGAffineTransform final = CGAffineTransformConcat(scaleTransform, translationTransform);
return final;
}
Run Code Online (Sandbox Code Playgroud)
Ski*_*kie 20
所以实际实现非常简单:
- (CGAffineTransform)translatedAndScaledTransformUsingViewRect:(CGRect)viewRect fromRect:(CGRect)fromRect {
CGSize scales = CGSizeMake(viewRect.size.width/fromRect.size.width, viewRect.size.height/fromRect.size.height);
CGPoint offset = CGPointMake(CGRectGetMidX(viewRect) - CGRectGetMidX(fromRect), CGRectGetMidY(viewRect) - CGRectGetMidY(fromRect));
return CGAffineTransformMake(scales.width, 0, 0, scales.height, offset.x, offset.y);
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里看到完整的例子:https://github.com/vGubriienko/TransformTest
(我仍然需要更新它以使用身份作为完整图像)
| 归档时间: |
|
| 查看次数: |
7580 次 |
| 最近记录: |