使用CGAffineTransformTranslate移动视图时如何获取当前中心点?

Huỳ*_*ong 0 iphone transform frame nslog cgaffinetransform

我使用移动视图CGAffineTransformTranslate,当我使用时NSlog: view.center.x,移动时这个值不会改变吗?但我NSlog: view.frame.orgin.x,这个当前值总是在我移动时改变!那么,我搬家时如何获得当前价值中心?

joe*_*ick 7

你必须得到框架的中心.这可以很容易地完成.

定义这样的函数:

CGPoint CGRectCenter(CGRect rect)
{
    return CGPointMake(CGRectGetMidX(rect), CGRectGetMidY(rect));
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过以下方式获得视图的中心:

CGRectCenter(view.frame);
Run Code Online (Sandbox Code Playgroud)

编辑:

我只是查看了frame属性的文档,并且frame如果应用了转换,则表示未定义的值.您可能会更好地使用view.layer.frame,因为CALayer的文档不会带有相同的警告.但我怀疑,UIView方法只是调用CALayer方法,所以你可能没问题.