如何在中心IOS水平对齐我的图像

时间:2012-02-28 15:04:06

标签: objective-c ios ios5

这是我的形象:

Obj *obj = ... obj has imageHref which is NSString

UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 
[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];

根据图像尺寸,我无法弄清楚如何集中它,任何想法?

这是所有内部方法:

- (void)drawRect:(CGRect)rect {    
    Obj *obj = ... obj has imageHref which is NSString

    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:obj.imageHref]]; 
    [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];

    NSLog(@"%f", rect.size.width);
     NSLog(@"%f", rect.size.height);
}

rect.size.width打印320.000000,rect.size.height打印416.000000

3 个答案:

答案 0 :(得分:33)

[image drawInRect:CGRectMake((self.view.frame.size.width/2) - (image.size.width/2),
                             (self.view.frame.size.height / 2) - (image.size.height / 2),
                             image.size.width, 
                             image.size.height)];

编辑:

你已经在UIView了:

[image drawInRect:CGRectMake((self.frame.size.width/2) - (image.size.width/2), (self.frame.size.height / 2) - (image.size.height / 2), image.size.width, image.size.height)];

答案 1 :(得分:23)

这个或类似的东西应该水平居中。

CGPoint centerImageView = imageView.center;
centerImageView.x = self.view.center.x;
ImageView.center = centerImageView;

答案 2 :(得分:1)

可以在.h类文件中@interface之前添加这样的宏 #define COUNTMID(X,Y) (float) (X-Y)/2
然后在代码中使用它作为
float center COUNTMID(ParentView.frame.width,ChildView.frame.width)
将ChildView视图放在ParentView的水平中心
我还制作了一个方法,将ChildView框架放在ParentView的中心:

-(CGRect) CenterFrameOfView:(UIView *) ParentView forView:(UIView *) ChildView
{
    CGRect result = CGRectMake(COUNTMID(ParentView.frame.size.width,ChildView.frame.size.width),COUNTMID(ParentView.frame.size.height,ChildView.frame.height),ChildView.frame.size.width,ChildView.frame.size.height);
    return result;
}

或使用setFrame

-(void) CenterFrameOfView:(UIView *) ParentView forView:(UIView *) ChildView 
{
    CGRect result = CGRectMake(COUNTMID(ParentView.frame.size.width,ChildView.frame.size.width),COUNTMID(ParentView.frame.size.height,ChildView.frame.height),ChildView.frame.size.width,ChildView.frame.size.height);
    [ChildView setFrame:result];
}

希望有所帮助