CGPoints и UIViews

Можно ли поместить CGPoint внутри UIView в качестве подпредставления, чтобы при повороте моего UIView CGPoint вращался вместе с ним.


person Blane Townsend    schedule 09.02.2011    source источник


Ответы (2)


CGPoint — это логическая конструкция, а не графика. С учетом сказанного следующее приведет к тому, что точка будет вращаться вокруг другой (называемой точки). Это может не относиться напрямую, но должно дать вам некоторое направление. Ключ CGAffineTransform.

CGAffineTransform translateTransform = CGAffineTransformMakeTransation(point.x, point.y);
CGAffineTransform rotateTransform = CGAffineTransformMakeRotation(angle);
CGAffineTransform customTransform = CGAffineTransformConcat(CGAffineTransformConcat( CGAffineTransformInvert(translateTransform), rotateTransform), translateTransform);
newPoint = CGPointApplyAffineTransform(initialPoint, customTransform);
person jakev    schedule 09.02.2011

CGPoint (например, CGSize или CGRect) являются структурами C и не должны быть "выводимыми". Я имею в виду, что они представляют собой просто математическое представление координат или геометрических «материалов», поэтому их невозможно добавить в ваше дерево отображения.

Если вам нужно отобразить «точку» в вашем UIView и вам нужно ею управлять, просто добавьте дочерний UIView к родительскому UIView с рамкой квадрата 1px с цветным фоном (если вам нужно его отобразить). В этом случае любая пространственная модификация вашего родительского UIView повлияет на дочерний UIView (даже поворот).

В противном случае, если вам нужно знать положение поворота CGPoint на угол относительно другой точки, обратитесь к этому хорошему ответу, который содержит необходимую вам математику.

Повернуть точку на другую точку в 2D

Чао!

person lomanf    schedule 09.02.2011