[英]Can 2D and 3D transforms be applied to iOS controls?
以前从未真正使用iOS开发过,所以我正在研究使用标准iOS控件(例如文本字段,列表等)的可能性,并想知道可以将哪些转换应用于它们。
这些标准控件是否支持2D变换,例如缩放,平移和旋转? 这些标准控件是否还支持包括z轴的3D转换,例如缩放,平移和旋转?
如果对两个问题的回答都是“是”,则存在什么“级别”的支持? 例如,对于文本字段,如果在3D坐标空间中对其进行变换,是否仍可以在其中输入文本?
是的,还有很多。 例如,UITextField继承自UIControl,继承自UIView。 这意味着您可以直接通过视图的transform属性访问视图的transform属性:
[myTextField setTransform:CGAffineTransformMake(a, b, c, d, x, y)];
或者,对于3D支持,可以访问视图图层的transform属性以应用CATransform3D:
[myTextField.layer setTransform:CATransform3DRotate(trans, theta, x, y, z)];
CATransform3D的定义如下,@ Xman指出,您需要使用#import <QuartzCore/QuartzCore.h>
导入QuartzCore框架,并在构建阶段对其进行链接。
struct CATransform3D
{
CGFloat m11, m12, m13, m14;
CGFloat m21, m22, m23, m24;
CGFloat m31, m32, m33, m34;
CGFloat m41, m42, m43, m44;
};
typedef struct CATransform3D CATransform3D;
在这两种情况下,将变换应用于文本字段后,仍可以与文本字段进行交互。
可以在Apple文档中找到更多信息。
还要检查CATransform3D
,
CATransform3D yourTransform = CATransform3DIdentity;
yourTransform.m34 = 1.0 / -500;
//You can rotate the component in any angle around x,y,z axis using following line.
//Below line will rotate the component in 60 degree around y-axis.
yourTransform = CATransform3DRotate(yourTransform, DEGREES_TO_RADIANS(60), 0.0f, 1.0f, 0.0f); //#define DEGREES_TO_RADIANS(d) (d * M_PI / 180)
//You can even translate the component along x,y,z axis
//Below line will translate component by 50 on y-axis
yourTransform = CATransform3DTranslate(yourTransform, 0, 50, 0);
//apply transform to component
yourComponent.layer.transform = yourTransform;
别忘了导入
#import <QuartzCore/QuartzCore.h>
希望这会帮助你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.