多くの場合、ビューを 5 ピクセル下に移動する必要があります。私のアプローチはこのようなものです
view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y + 5, view.frame.size.width, view.frame.size.height);
もっと簡単な方法はありませんか?:-/
多くの場合、ビューを 5 ピクセル下に移動する必要があります。私のアプローチはこのようなものです
view.frame = CGRectMake(view.frame.origin.x, view.frame.origin.y + 5, view.frame.size.width, view.frame.size.height);
もっと簡単な方法はありませんか?:-/
別の解決策
view.frame = CGRectOffset( view.frame, 0, 5 );
カテゴリルートに移動する場合は、メソッド名の衝突を避けるためにプレフィックスを付ける必要があります。
例えば
- (void)ps_addOffset:(CGPoint)offset;
{
self.frame = CGRectIntegral(CGRectOffset(self.frame, offset.x, offset.y));
}
私はマクロを使うのが好きです:
#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);
これらのマクロがあります:
#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);
おそらく、UIView クラスの一連のカテゴリを作成する必要があります。
何かのようなもの
-(void)changeFrameOriginHorizontally:(NSInteger)paramHorizontalChange vertically:(NSInteger)paramVerticalChange; -(void)changeFrameSizeHorizontally:(NSInteger)paramHorizontalChange vertically:(NSinteger)paramVerticalChange;
元の投稿の解決策が気に入らない主な理由は、コードの意味が非常に不親切で冗長すぎることです。
負の値と正の値を許可し、変化がない場合は nil を許可します。
皆さんはどう思いますか?
少し良い:
view.center = CGPointMake(view.center.x, view.center.y+5);