2011-12-21 26 views
20

Tôi đang tạo ứng dụng cho iPad, chế độ phong cảnh duy nhất sẽ được hỗ trợ. Tôi đang có một số UIView và sau đó tôi tự động thêm UIImageView làm chế độ xem phụ. Tuy nhiên, mục tiêu của tôi là thêm hình ảnh ở trung tâm của UIView. Vì vậy, tôi đã sử dụng mã này,UIView.center = UIImageView.center nhưng chế độ xem hình ảnh dường như không nằm ở giữa cảnh quan

[imageView setCenter:dynamicMainView.center]; 

nơi IMAGExem là UIImageView (hiển nhiên :)) và dynamicMainView là UIView Mặc dù những kết quả cuối cùng docent dường như là ở trung tâm,

trực quan Đại diện

enter image description here


Mã phương pháp đầy đủ cho quảng cáo ding UIImageView trong UIView là,

-(void) addImageIntoMainDynamicView:(UIImage *) image 
{ 
    [self clearImageFromMainDynamicView];//Always clear Dynamic main view before adding new views 
    imageView = [[UIImageView alloc] initWithImage:image]; 
     if(imageView.bounds.size.width > dynamicMainView.bounds.size.width || imageView.bounds.size.height > dynamicMainView.bounds.size.height) 
     { 
      [imageView setFrame:[dynamicMainView bounds]]; 
     } 

     [imageView setCenter:dynamicMainView.center]; 
     NSLog(@"Image : X = %f and Y = %f", imageView.center.x,imageView.center.y); 
     NSLog(@"UIView : X = %f and Y = %f", dynamicMainView.center.x,dynamicMainView.center.y); 
     [dynamicMainView addSubview:imageView]; 
    [imageView release]; 
} 

Và trên giá trị log là,

2011-12-21 21:07:11.850 Map1TestApp[94645:11603] Image : X = 512.000000 and Y = 371.500000 
2011-12-21 21:07:11.853 Map1TestApp[94645:11603] UIView : X = 512.000000 and Y = 371.500000 

Bất kỳ manh mối về việc tại sao nó không thêm ở trung tâm? Tôi có làm điều gì sai?


CHO TƯƠNG LAI VIEWER THE anwser WS:

[imageView setCenter:CGPointMake(CGRectGetMidX([dynamicMainView bounds]), CGRectGetMidY([dynamicMainView bounds]))]; 

Trả lời

20

Các center của một cái nhìn được thể hiện trong đó là SuperView của hệ tọa độ. Vì vậy, bạn đang căn giữa chế độ xem hình ảnh của mình trong hệ tọa độ sai. (giám sát của chế độ xem động như trái ngược với chế độ xem động)

Để xem trung tâm A trong chế độ xem B, điểm trung tâm A phải là trung tâm của hình chữ nhật bounds B. Bạn có thể sử dụng (từ bộ nhớ!) CGRectGetMidXCGRectGetMidY.

+0

Vì vậy, treo kiểm tra sự hiểu biết của tôi, Trước khi tôi nhận được một khung ràng buộc đó là toàn bộ màn hình chứ không chỉ là một không gian UIView (Rect)? Nhưng bây giờ tôi đang nhận được trung tâm đi CGRect của UIView? Tôi có đúng không? – doNotCheckMyBlog

+1

Vâng, đúng vậy. giới hạn là kích thước của khung nhìn trong hệ tọa độ của khung nhìn (nguồn gốc 0,0). Khung là kích thước của khung nhìn nhưng nguồn gốc là điểm trong hệ tọa độ của người giám sát ở góc trên cùng bên trái. Thuộc tính trung tâm nằm trong hệ tọa độ của người giám sát. – jrturton

0

Bạn nên kiểm tra kích thước của hình ảnh. Khung của hình ảnh có thể không phải là khung của UIImageView. Đặt màu nền của UIImageView thành một cái gì đó như [UIColor redColor] và clipToBounds thành true và xem điều gì sẽ xảy ra. Nếu có các phần màu đỏ có thể nhìn thấy thì vấn đề là với thuộc tính contentMode của đối tượng imageView của bạn.

+0

Vâng tôi đã kiểm tra trước khi lol, nó đã được sử dụng tốt, nhưng đề nghị của jrturton đã hoạt động. Tôi đã đăng một đoạn trích giải quyết câu hỏi của tôi :) – doNotCheckMyBlog

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