繁体   English   中英

可以将2D和3D变换应用于iOS控件吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM