2009-04-10 22 views
6

Sử dụng thông tin tại đây: iPhone Landscape-Only Utility-Template Application Tôi có thể khởi chạy, sử dụng và duy trì chế độ xem của mình dưới dạng chỉ ngang. Tuy nhiên, tôi đang bối rối về trục.Sự nhầm lẫn trục của chế độ xem ứng dụng chỉ dành cho iPhone

Trục tuyệt đối hoạt động như mong đợi, có nghĩa là (0,0) ở trên cùng bên trái, (240,0) là trung tâm trên cùng, (0,320) là góc dưới bên trái, v.v. Tuy nhiên, khi tôi cố gắng thực hiện tính toán liên quan đến quan điểm tôi vẽ trên tôi tìm x, y để được định hướng như thể bức chân dung trên cùng bên trái là nguồn gốc. Vì vậy, để vẽ một cái gì đó ở trung tâm điểm trong điều khiển điểm của tôi, tôi cần phải làm:

CGPoint center = CGPointMake(self.view.center.y, self.view.center.x); 

Tôi giả định này do thực tế rằng UIView tham chiếu bởi các bộ điều khiển của tôi self.view là cho nó giá trị tương ứng với nó kèm theo khung, có nghĩa là cửa sổ có nguồn gốc trục của nó ở trên cùng bên trái trong chế độ dọc.

Có cách nào đơn giản để giải thích cho điều này mà tôi bị thiếu không?

Tài liệu cho thấy rằng thuộc tính biến đổi chính xác là những gì tôi đang tìm kiếm, tuy nhiên, tôi gặp phải sự nhầm lẫn hơn ở đây. Có 3 đặc tính quan trọng liên quan đến:

  • khung
  • vọt
  • trung tâm

Nếu tôi làm điều này trong viewDidLoad:

// calculate new center point 
CGFloat x = self.view.bounds.size.width/2.0; 
CGFloat y = self.view.bounds.size.height/2.0; 
CGPoint center = CGPointMake(y, x); 

// set the new center point 
self.view.center = center; 

// Rotate the view 90 degrees counter clockwise around the new center point. 
CGAffineTransform transform = self.view.transform; 
transform = CGAffineTransformRotate(transform, -(M_PI/2.0)); 
self.view.transform = transform; 

Bây giờ theo các tài liệu tham khảo, nếu chuyển đổi không được đặt thành biến đổi nhận dạng self.view.frame là không xác định. Vì vậy, tôi nên làm việc với giới hạn và trung tâm.

self.view.center là chính xác ngay bây giờ, bởi vì tôi đặt nó theo ý mình muốn. self.view.bounds xuất hiện không thay đổi. self.view.frame dường như chính xác như tôi muốn, nhưng như đã nói ở trên, tham chiếu cho rằng nó không hợp lệ.

Vì vậy, mặc dù tôi có thể nhận được những gì tôi tin là những con số phù hợp, tôi sợ rằng tôi đang nhìn thấy một cái gì đó quan trọng mà sẽ trở thành rắc rối sau này.

Cảm ơn.

Trả lời

2

Với Quartz 2D, hệ tọa độ có gốc (0,0) ở góc dưới bên trái của hình ảnh, không phải ở góc trên bên trái. Có lẽ đó là những gì bạn đang mất tích.

Xem: http://developer.apple.com/documentation/graphicsimaging/Conceptual/drawingwithquartz2d/dq_overview/dq_overview.html#//apple_ref/doc/uid/TP30001066-CH202-CJBBAEEC

+0

Cảm ơn bạn đã trả lời, nhưng theo các ứng dụng iPhone phần Hướng dẫn cho nhà phát triển trên Xem Geometry: http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide /WindowsandViews/WindowsandViews.html#//apple_ref/doc/uid/TP40007072-CH8-SW5 những gì bạn chỉ ra không phải là vấn đề –

+1

Và nếu bạn tiếp tục đọc nó nói "Mặc dù hệ tọa độ được sử dụng bởi Quartz không sử dụng trên cùng bên trái góc như điểm gốc, đối với nhiều Quartz gọi đây không phải là vấn đề. [...] Anh ấy chỉ có thời gian bạn cần cân nhắc các hệ tọa độ khác nhau này là khi bạn tự thiết lập môi trường vẽ bằng Quartz. " Nếu bạn đang tự vẽ các công cụ để màn hình bằng cách sử dụng Quartz, đó sẽ là câu trả lời :) –