Posted at

UIViewのframe指定での移動をちょっとだけ楽にする

More than 5 years have passed since last update.

iPhoneアプリを作ってる際によくUIViewを移動させることが多いです。(私だけかも知れません)

sizeを変更しないでx,y座標だけを変更する場合に

// UIViewの座標をx = 100, y = 50に動かしたい場合

UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
view.frame = CGRectMake(100, 50, view.frame.size.width, view.frame.size.height);

と書けば動きますが、めんどくさい!(と思っても4回ぐらい上の用に書いてます。)

めんどくさいので思い腰を上げた結果

Category作って多少楽になりました。

// UIView+Util.h

@interface UIView (Util)
-(void) moveBy:(CGPoint) point;
-(void) moveTo:(CGPoint) point;
@end

// UIView+Util.m
-(void) moveBy:(CGPoint)point {
self.frame = (CGRect){.origin = point, .size = self.frame.size};
}
-(void) moveTo:(CGPoint)point {
CGPoint nowPoint = self.frame.origin;
self.frame = (CGRect){.origin.x = nowPoint.x + point.x, .origin.y = nowPoint.y + point.y, .size = self.frame.size};
}

使い方は至って簡単

#import "UIView+Util.h"

UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
[view moveBy:CGPointMake(100, 50)];

あーちょっと楽になった気がするー