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

标签 iphone ios ipad 3d 2d

我之前从未真正使用 iOS 进行过开发,因此正在研究标准 iOS 控件(例如文本字段、列表等)的可能性,并且想知道可以对它们应用哪些转换。

这些标准控件是否支持缩放、平移和旋转等 2D 变换? 这些标准控件是否还支持包括 z 轴的缩放、平移和旋转等 3D 变换?

如果任一问题的答案都是肯定的,那么存在什么“级别”的支持?例如,对于文本字段,如果我将其转换到 3D 坐标空间,我仍然可以在其中输入文本吗?

最佳答案

是的,而且很多。例如 UITextField 继承自 UIControl 并继承自 UIView。这意味着您可以直接通过 View 的转换属性访问其转换属性:

[myTextField setTransform:CGAffineTransformMake(a, b, c, d, x, y)];

或者对于 3D 支持,您可以访问 View 图层的变换属性来应用 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's documentation中找到.

关于iphone - 2D 和 3D 变换可以应用于 iOS 控件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18730186/

相关文章:

ios - 在 Swift 中没有参数的便利初始化?

iphone - 为 iPhone 构建具有日/周和月 View 的日历

iphone - 单击 "OK"后首次运行时 GPS 未启动

ios - iphone SDWebImage 调整缓存图像的大小

ios - 删除 Bridging Header 后从 Interface Builder 拖动时 Xcode 崩溃

iphone - 如何创建发光字体?

iphone - Facebook SDK:发布到墙上仅出于测试目的对我可见?

iphone - 重新排列 UIScrollView 中的 subview ,就像主屏幕上的应用程序图标一样

ios - [椰子] :Resource Bundle not accessbile

ios - 在 UIViewController 之间切换时会发生什么类型的内存问题?