2

これまで iOS で実際に開発したことがないので、テキスト フィールド、リストなどの標準 iOS コントロールの可能性を調査しており、それらに適用できる変換を知りたいと思っています。

これらの標準コントロールは、スケーリング、移動、回転などの 2D 変換をサポートしていますか? これらの標準コントロールは、z 軸を含むスケール、移動、回転などの 3D 変換もサポートしていますか?

いずれかの質問に対する答えが「はい」の場合、どの「レベル」のサポートが存在しますか? たとえば、テキスト フィールドを 3D 座標空間に変換すると、テキストを入力できますか?

4

2 に答える 2

2

はい、そしてたくさん。たとえば、UITextField は UIControl から継承し、UIView から継承します。これは、その transform プロパティを介して、ビューの transform プロパティに直接アクセスできることを意味します。

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

または、3D サポートの場合、ビューのレイヤーの変換プロパティにアクセスして、CATransform3D を適用できます。

[myTextField.layer setTransform:CATransform3DRotate(trans, theta, x, y, z)];

CATransform3D は次のように定義されています。@Xman が指摘したように、を使用して QuartzCore フレームワークをインポートし#import <QuartzCore/QuartzCore.h>、ビルド フェーズでそれに対してリンクする必要があります。

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 のドキュメントを参照してください。

于 2013-09-10T23:15:40.917 に答える
1

もチェック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>

これがあなたを助けることを願っています。

于 2013-09-11T04:33:50.743 に答える