1

多くの場合、ビューを 5 ピクセル下に移動する必要があります。私のアプローチはこのようなものです

view.frame = CGRectMake(view.frame.origin.x,
                        view.frame.origin.y + 5,
                        view.frame.size.width,
                        view.frame.size.height);

もっと簡単な方法はありませんか?:-/

4

7 に答える 7

3

別の解決策

view.frame = CGRectOffset( view.frame, 0, 5 );
于 2013-01-09T20:34:51.840 に答える
0

カテゴリルートに移動する場合は、メソッド名の衝突を避けるためにプレフィックスを付ける必要があります。

例えば

- (void)ps_addOffset:(CGPoint)offset;
{
    self.frame = CGRectIntegral(CGRectOffset(self.frame, offset.x, offset.y));
}
于 2013-01-09T21:21:56.657 に答える
0

私はマクロを使うのが好きです:

#define width(a) a.frame.size.width
#define height(a) a.frame.size.height
#define top(a) a.frame.origin.y
#define left(a) a.frame.origin.x
#define bottom(a) top(a)+height(a)
#define right(a) left(a)+width(a)

#define FrameReposition(a,top,left) a.frame = CGRectMake(x, y, width(a), height(a))

.....

FrameReposition(myView,0,0);
于 2013-01-09T21:26:03.200 に答える
0

これらのマクロがあります:

#define VIEW_INCREASE_Y(view, value) view.frame = CGRectMake(view.frame.origin.x,view.frame.origin.y+value,view.frame.size.width,view.frame.size.height)

次に、次のことができます。

VIEW_INCREASE_Y(customView, 25);
于 2013-01-09T20:27:18.120 に答える
0

おそらく、UIView クラスの一連のカテゴリを作成する必要があります。

何かのようなもの

-(void)changeFrameOriginHorizontally:(NSInteger)paramHorizontalChange
                          vertically:(NSInteger)paramVerticalChange;

-(void)changeFrameSizeHorizontally:(NSInteger)paramHorizontalChange
                        vertically:(NSinteger)paramVerticalChange;

元の投稿の解決策が気に入らない主な理由は、コードの意味が非常に不親切で冗長すぎることです。

負の値と正の値を許可し、変化がない場合は nil を許可します。

皆さんはどう思いますか?

于 2013-01-09T20:35:32.280 に答える
0

少し良い:

view.center = CGPointMake(view.center.x, view.center.y+5);
于 2013-01-09T20:20:13.577 に答える