2012-02-28 42 views
8

Dưới đây là hình ảnh của tôi:làm thế nào để căn chỉnh hình ảnh của tôi ở trung tâm IOS ngang

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

Tùy thuộc vào kích thước hình ảnh tôi không thể tìm ra cách để tập trung nó, bất kỳ ý tưởng?

Đây là tất cả các phương pháp bên trong:

- (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); 
} 

đâu rect.size.width in 320,000000 và rect.size.height in 416,000000

Trả lời

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

chỉnh sửa:

Như bạn đã có trong một 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)]; 
+0

Hmm ... Không có gì bảo đảm rằng một bộ phận của một chiều rộng hoặc chiều cao bằng 2 đợt nghỉ là một số nguyên. Tôi sẽ thêm 'sàn'. –

23

Điều này hoặc một cái gì đó rất như thế này nên trung tâm theo chiều ngang.

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

Nhờ hoạt động tuyệt vời của nó .. – Mani

+0

thuộc tính của một trung tâm không được tìm thấy cho loại UIImage – London

+0

nhưng nó có trên UIImageView. Tôi đã cập nhật câu trả lời của mình để làm rõ điều đó. – Damo

1

Có thể thêm macro như thế này trước khi @interface trong .h file class
#define COUNTMID(X,Y) (float) (X-Y)/2
và sau đó sử dụng nó trong mã như
float center COUNTMID(ParentView.frame.width,ChildView.frame.width)
đặt xem ChildView tại trung tâm theo chiều ngang của ParentView
Tôi cũng đã thực hiện một phương pháp, đặt khung ChildView ở trung tâm của 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; 
} 

Hoặc với 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]; 
} 

Hy vọng nó giúp

Các vấn đề liên quan