UIImageViewを作成し、それをビューにループで追加します。初期フレームを0,0,1,47に設定し、ループの各通過で画像ビューの中心を変更してスペースを空けます。
Origin.yとして常に0を使用しています
問題は、Origin参照が画像ビューの中央にあることです。インターフェイスビルダーを使用していると仮定すると、これは下の画像と同等です。
コード内の参照ポイントを変更するにはどうすればよいですか?
これらの答えとあなたのコメントを読んだ後、私はあなたのポイントが何であるか本当にわかりません。
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;
_
しかし、CALayers
(QuartzCoreをインポートすることを忘れないでください)の魔法の世界に1レベル深く行くと、より強力になります。
CALayer
には次のものがあります。
position
–なるほど、はっきりと「センター」とは言わないので、センターではないかもしれません!anchorPoint
– CGPoint
は、ビューのポイントinsideを指定する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
を中心に回転します。
Bu [〜#〜] how [〜#〜]ではなく、特定のことを行う[〜#〜] what [〜#〜]達成、私はこれ以上あなたを助けることはできません。
オブジェクトのフレームには、スーパービュー内の位置が含まれます。次のように変更できます。
CGRect frame = self.imageView.frame;
frame.Origin.y = 0.0f;
self.imageView.frame = frame;
私があなたを正しく理解しているなら、あなたが動かしたい画像ビューのフレームを設定する必要があります。これは、次のような単純なケースで実行できます。
_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];
どちらの方法でも、追加する親の左上に画像ビューが設定されます。