2012-02-28 20 views
8

ここでは私のイメージは次のとおりです。画像サイズに応じてIOS水平

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

答えて

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

編集:

[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)]; 
:あなたはUIViewの中にすでにあるので

+0

を役に立てば幸いうーん...幅の除算や整数として2つの滞在することにより、高さという保証はありません。私は 'フロア'を追加します。 –

23

これは非常によく似ています。

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

ありがとうございます。 – Mani

+0

タイプUIImage – London

+0

ではセンターのプロパティが見つかりませんでしたが、UIImageViewにあります。私はそれを明らかにするために私の答えを更新しました。 – Damo

1

.hのクラスファイルに@interface
#define COUNTMID(X,Y) (float) (X-Y)/2
をこのようなマクロを追加し、ParentViewの水平方向の中心であなたのChildViewビューを配置する
float center COUNTMID(ParentView.frame.width,ChildView.frame.width)
ようなコードでそれを使用することが可能です
また、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]; 
} 

ではそれが