2012-06-04 17 views
7

Theo tài liệu của Apple,iOS chức năng nói "CGRectMinY" mà phải là đáy góc trái

CGRectMinY (CGRect) rect trả về tọa độ y của góc trên bên phải của hình chữ nhật quy định

Không phải là góc dưới cùng bên trái của hình chữ nhật? Bởi vì tôi nghĩ trục Y là hướng xuống.

+0

Tôi đã gửi một radar trên tài liệu khó hiểu này. Xin vui lòng dupe nếu bạn muốn nhìn thấy nó cố định! http://openradar.appspot.com/radar?id=2876407 –

+1

Tôi nghĩ bài học ở đây không sử dụng chức năng này. –

Trả lời

14

Nếu tính năng này dành cho iOS, tôi cho rằng chức năng của bạn là sai.

http://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CGGeometry/Reference/reference.html

CGRectGetMinY

Trả về y phối hợp mà thiết lập cạnh đáy của một hình chữ nhật .

CGFloat CGRectGetMinY (CGRect rect);

thông số

rect

The rectangle to examine. 

Return Value

y tọa độ của góc dưới bên trái của hình chữ nhật quy định. Availability

Available in iOS 2.0 and later. 

liên quan Mã mẫu

HeadsUpUI 
oalTouch 
PhotoScroller 
QuartzDemo 
SpeakHere 

khai báo trong CGGeometry.h

Sửa: Để xóa confussion. "CGRectGetMinY" là một chức năng được sử dụng trên CGRect, điều này có nghĩa là nó sẽ trả về kết quả như thể nó chỉ xem xét một hình chữ nhật. ví dụ:

// With a self created element 

CGRect rect = CGRectMake(0, 429, 100, 44); 

NSLog(@"rect.origin.y: %f",rect.origin.y); 
NSLog(@"rect.size.height: %f",rect.size.height); 
NSLog(@"CGRectGetMinY(rect): %f",CGRectGetMinY(rect)); 
NSLog(@"CGRectGetMaxY(rect): %f",CGRectGetMaxY(rect)); 

lợi nhuận

2012-06-04 10:55:49.737 test[7613:707] rect.origin.y: 429.000000 
2012-06-04 10:55:49.739 test[7613:707] rect.size.height: 44.000000 
2012-06-04 10:55:49.741 test[7613:707] CGRectGetMinY(rect): 429.000000 
2012-06-04 10:55:49.748 test[7613:707] CGRectGetMaxY(rect): 473.000000 

Điều quan trọng là JUST xem xét việc này, nếu bạn yêu cầu cho phút bạn sẽ nhận được một giá trị thấp hơn nếu bạn yêu cầu tối đa. Ngay cả khi bạn nghĩ về điều này mà không sử dụng hệ thống tọa độ ios.

NGAY BÂY GIỜ ios IS đảo ngược, vì vậy bạn phải xem xét điều này, chức năng trước đó sẽ hoạt động tốt, nhưng trực quan nói kết quả được đảo ngược bởi vì hệ thống được đảo ngược.

// With an element on the screen 

NSLog(@"gpsButton.frame.origin.y: %f",gpsButton.frame.origin.y); 
NSLog(@"gpsButton.frame.size.height: %f",gpsButton.frame.size.height); 
NSLog(@"CGRectGetMinY(gpsButton.frame): %f",CGRectGetMinY(gpsButton.frame)); 
NSLog(@"CGRectGetMaxY(gpsButton.frame): %f",CGRectGetMaxY(gpsButton.frame)); 

lợi nhuận

2012-06-04 10:55:49.725 test[7613:707] gpsButton.frame.origin.y: 429.000000 
2012-06-04 10:55:49.727 test[7613:707] gpsButton.frame.size.height: 44.000000 
2012-06-04 10:55:49.732 test[7613:707] CGRectGetMinY(gpsButton.frame): 429.000000 
2012-06-04 10:55:49.735 test[7613:707] CGRectGetMaxY(gpsButton.frame): 473.000000 

Đối với một người nhìn thấy này, đó cũng là không có gì sai, min là ít hơn tối đa.

Vì vậy, sự nhầm lẫn nằm trong hệ thống đảo ngược ios, vì bạn muốn lấy giá trị trực quan ít hơn từ hệ thống ngược.

Đây là lý do tại sao nó có vẻ lạ, mô tả trong CGGeometry được thực hiện cho "thế giới con người". Không cho hệ thống đảo ngược ios.

+1

wow, bây giờ tôi đang bối rối. có vẻ như người hỏi đã bỏ qua các tài liệu, nhưng sự hiểu lầm có ý nghĩa với tôi. báo giá của bạn xuất hiện chính xác, nhưng bây giờ tôi có cùng một câu hỏi như người hỏi! tại sao miny sẽ chỉ đến đáy khi hệ tọa độ CGRect (như view.bounds) có nguồn gốc ở phía trên bên trái. min là gần gũi hơn với nguồn gốc, phải không? và nguồn gốc ở trên cùng bên phải? không nên min gần đầu hơn? – danh

+2

Bởi vì đây là một phương pháp thuận tiện cho con người, vì vậy ngay cả khi hệ thống tọa độ ios là ngược lại, một con người thường muốn điểm gần mặt đất hơn. Và cũng do thực tế là nếu bạn muốn một trong những đầu bạn chỉ cần khung/bounds.origin.y trái để nhận được một thấp hơn trong nơi bạn sẽ phải frame/bounds.origin.y + frame/bounds.size. chiều cao – Pochi

+0

@LuisOscar: oops tôi đã trích dẫn sai. Nó là xấu của tôi. Nếu y xuống (tương đương với gốc ở phía trên bên trái), nên 'CGRectGetMinY' ở trên cùng bên phải và' CGRectGetMax' nằm ở dưới cùng bên trái – tranvutuan

0

Trục Y không hướng xuống dưới, bắt đầu từ điểm trên cùng bên trái trong chế độ xem. Vì vậy, các giá trị nhỏ hơn của y gần với đầu của chế độ xem.

+0

Nếu trục y bị xuống, nên gần với đầu của chế độ xem tương đương với góc trên bên phải của chế độ xem? – tranvutuan