UIImageViewを作成してループに追加して、最初のフレームを0,0,1,47に設定し、ループの各パスで画像ビューの中心を変更して空間に配置します。UIViewの原点参照を設定するにはどうすればよいですか?
私はいつも問題が原点基準は、我々は、これは下の画像に相当し、インターフェイスビルダーにあったと仮定すると、画像ビューの中心にあるあるorigin.y
として0を使用しています。
コード内の参照ポイントを変更するにはどうすればよいですか?
UIImageViewを作成してループに追加して、最初のフレームを0,0,1,47に設定し、ループの各パスで画像ビューの中心を変更して空間に配置します。UIViewの原点参照を設定するにはどうすればよいですか?
私はいつも問題が原点基準は、我々は、これは下の画像に相当し、インターフェイスビルダーにあったと仮定すると、画像ビューの中心にあるあるorigin.y
として0を使用しています。
コード内の参照ポイントを変更するにはどうすればよいですか?
これらの回答とあなたのコメントを読んだ後、私は本当にあなたのポイントが分かりません。 UIView
で
次の2つの方法で位置を設定することができます。
center
- それは間違いなくそれを中心と言います。frame.origin
- 左上隅を直接設定することはできません。あなたは左下隅があなただけのこの操作を行うことができ、X = 300、Y = 300になるようにしたい場合:
UIView *view = ...
CGRect frame = view.frame;
frame.origin.x = 300 - frame.size.width;
frame.origin.y = 300 - frame.size.height;
view.frame = frame;
をしかし、あなたは魔法の世界に1つのレベル深く行けばCALayers
(QuartzCoreをインポートするのを忘れないでください)、より強力です。
CALayer
はこれらがあります。
position
- あなたはそれが中央ではないかもしれないので、それが明示的に「センター」と言っていない、参照してください!anchorPoint
- CGPoint
範囲が0..1(を含む)の値で、の内部にはのビューが指定されています。デフォルトはx = 0.5、y = 0.5で 'center'を意味します(-[UIView center]
はこの値を前提としています)。それ以外の値に設定すると、そのポイントにposition
プロパティが適用されます。例時間:
view.layer.anchorPoint = CGPointMake(1, 1);
view.layer.position = CGPointMake(300, 300);
注意:レイヤーを回転すると /それは、デフォルトでは、中心で、anchorPoint
を中心に回転します表示します。
富栄あなただけの特定のことを行うためにHOWを依頼していないWHATあなたが達成したいことから、私はさらに、今どんなのを助けることはできません。
私はこれに尋ねたとき、私は非常に混乱しました。簡単に言えば、XcodeのIB機能では、有用なパネルを使ってUIViewのメトリックを設定し、ピクセル値を設定することができますが、中心から上中央、上右下、左下などの参照点を変更することもできますこれにより、私はこれを何らかの形でコードで行うことができると思っていましたが、AppleのXcodeに加えて混乱させないのは単なるUIにすぎませんでした。 – Daniel
私は、全体のポイントがサブビューを右に整列させるための、原点を右中央に設定し、その値を親の幅に設定することによって、これは、幅を引いた子幅などを計算する必要を回避することを意味します。 – Daniel
'frameViewLeft'や' frameOrigin'のようなプロパティを持つ 'UIView'で簡単に七面鳥を作成し、それらのアクセサーを手動で実装することができます。それから、あなたはそれを簡単にします。 – Tricertops
私が正しくあなたを理解していた場合、あなたは、移動の対象となる画像ビューの枠を設定する必要があります。
_theImageView.frame = CGRectMake(x, y, width, height);
明らかにx、y、幅、高さを自分で設定する必要があります。ビューのフレームは親ビューを参照していることにも注意してください。したがって、左上隅(x = 0、y = 0)にあり、幅320ポイント、高さ400ポイントのビューがあり、イメージビューのフレームを(10、50、 100,50)、それを前のビューのサブビューとして追加すると、画像ビューの境界がx = 0、y = 0であっても、親ビューの座標空間のx = 10、y = 50に位置します境界はビュー自体を参照し、フレームは親を参照します。
だから、あなたのシナリオでは、あなたのコードは次のようになります。
CGRect currentFrame = _theImageView.frame;
currentFrame.origin.x = 0;
currentFrame.origin.y = 0;
_theImageView.frame = currentFrame;
[_parentView addSubview:_theImageView];
代わりに、あなたが言うことができます。
CGRect currentFrame = _theImageView.frame;
_theImageView.frame = CGRectMake(0, 0, currentFrame.size.width, currentFrame.size.height);
[_parentView addSubview:_theImageView];
どちらのアプローチが左上に画像表示を設定しますあなたがそれを追加する親の。
こんにちは、問題は原点がそのビューの絶対中心に設定されているため、左上に変更する必要があります。 – Daniel
上記で説明したように、イメージビューのxとyを0、0に設定するだけで、親ビューの0、0に配置されます。 – jmstone617
本当に必要なのは、ビューのサイズを気にせずに、ビューの起点を既知のポイントに設定することです。 – Daniel
オブジェクトのフレームには、そのスーパービュー内の位置が含まれます。
CGRect frame = self.imageView.frame;
frame.origin.y = 0.0f;
self.imageView.frame = frame;
こんにちは、質問はフレームを変更する方法ではなく、原点の基準点を変更する方法です。現在設定されているy = 0は、ビューの中心が上にではなくy = 0になることを意味します – Daniel
原点を言うとき、どの原点について話していますか?フレームのorigin.yオフセットは、スーパービュー内でのトップの位置です。ビューの 'center'プロパティがありますが、ビュー内の移動可能な参照ポイントがわかりません。 –
原点はおそらく、私が意味することを説明するのに最適な言葉ではありません。IBで見ると、原点基準点を左上から中央、下中央、中央右に変更することができます。私はコードでビューを追加しました。親ビューの先頭に原点(座標)を設定したいので、y = 0としましょう。しかし、私のビューの原点基準点は、デフォルトのように左上には設定されていないようですが、中心に設定されています(画像参照)。したがって、y = 0に設定すると、そのビューの中心がy = 0に設定されているため、ビューの下半分しか表示されません。 – Daniel
IBでその赤いものを動かすことはできませんか? –
はい、ポイントは 'どのようにコード内の参照ポイントを変更できますか? ' – Daniel