Simple way to change the position of UIView? Simple way to change the position of UIView? ios ios

Simple way to change the position of UIView?


aView.center = CGPointMake(150, 150); // set center

or

aView.frame = CGRectMake( 100, 200, aView.frame.size.width, aView.frame.size.height ); // set new position exactly

or

aView.frame = CGRectOffset( aView.frame, 10, 10 ); // offset by an amount

Edit:

I didn't compile this yet, but it should work:

#define CGRectSetPos( r, x, y ) CGRectMake( x, y, r.size.width, r.size.height )aView.frame = CGRectSetPos( aView.frame, 100, 200 );


I had the same problem. I made a simple UIView category that fixes that.

.h

#import <UIKit/UIKit.h>@interface UIView (GCLibrary)@property (nonatomic, assign) CGFloat height;@property (nonatomic, assign) CGFloat width;@property (nonatomic, assign) CGFloat x;@property (nonatomic, assign) CGFloat y;@end

.m

#import "UIView+GCLibrary.h"@implementation UIView (GCLibrary)- (CGFloat) height {    return self.frame.size.height;}- (CGFloat) width {    return self.frame.size.width;}- (CGFloat) x {    return self.frame.origin.x;}- (CGFloat) y {    return self.frame.origin.y;}- (CGFloat) centerY {    return self.center.y;}- (CGFloat) centerX {    return self.center.x;}- (void) setHeight:(CGFloat) newHeight {    CGRect frame = self.frame;    frame.size.height = newHeight;    self.frame = frame;}- (void) setWidth:(CGFloat) newWidth {    CGRect frame = self.frame;    frame.size.width = newWidth;    self.frame = frame;}- (void) setX:(CGFloat) newX {    CGRect frame = self.frame;    frame.origin.x = newX;    self.frame = frame;}- (void) setY:(CGFloat) newY {    CGRect frame = self.frame;    frame.origin.y = newY;    self.frame = frame;}@end


UIView's also have a center property. If you just want to move the position rather than resize, you can just change that - eg:

aView.center = CGPointMake(50, 200);

Otherwise you would do it the way you posted.