这是我的形象:
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
答案 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];
}
希望有所帮助