gpt4 book ai didi

ios - 从矩形缩放 UIView 的正确转换?

转载 作者:技术小花猫 更新时间:2023-10-29 11:12:16 24 4
gpt4 key购买 nike

我想在 View 上模仿“放大”。较大的 View 将作为 subview 添加到较小的 View 的父 View 中,较大的 View 应该看起来像是从较小的 View 放大。给定较小 View 的矩形 fromRect 和放大 View 的最终帧 finalRect,什么是正确的变换?

enter image description here

我想方法签名会像下面这样,view 是父 View 。我写这篇文章是为了帮助自己,但还无法弄明白。

-(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;
}

最佳答案

所以实际实现起来很简单:

- (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);

}

您可以在此处查看完整示例:https://github.com/vGubriienko/TransformTest

(我仍然需要更新它以使用身份作为完整图像)

关于ios - 从矩形缩放 UIView 的正确转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14594267/

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