search
LoginSignup
32

More than 5 years have passed since last update.

posted at

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

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)];

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
32