2010-01-15 8 views
31

Trước khi tôi làm tất cả mọi thứ bằng tay, tôi muốn hỏi nếu có một số trợ giúp để có được từ khuôn khổ.Chuyển đổi tọa độ giữa cha mẹ/con UIView sau khi CGAffineTransform

Tôi có UIView chứa một UIView khác với bản đồ. Phụ huynh UIView nắm giữ một số truyền thuyết cho bản đồ. Ban đầu tôi xác định một số tọa độ trong chế độ xem bản đồ. ví dụ. (100, 40), và đặt một mảnh đồ họa ở đó trong khung nhìn cha mẹ (như một tack trong google maps vv). Chế độ xem gốc và chế độ xem con đều là 300x200 và có cùng nguồn gốc. Điều này có nghĩa rằng (100, 40) là cùng một điểm trong cả hai quan điểm.

Bây giờ tôi phóng to và di chuyển con UIView (bản đồ) bằng cách sử dụng CGAffineTransform và tọa độ (100, 40) bây giờ nằm ​​ở một nơi khác. Chế độ xem chính là mặt nạ hiệu quả tại đây.

Tôi có thể sử dụng Ma trận CGAffineTransform hoặc một phần khác của khung để tính toán và thông báo cho chế độ xem cha mẹ về vị trí đặt điểm ngay bây giờ mà điểm đã di chuyển không?

tức là (100, 400) trong chế độ xem con so với (100, 40) trong chế độ xem gốc, so sánh sau khi chuyển đổi là gì?

Cảm ơn bạn đã đề xuất hoặc trợ giúp.

Các hình ảnh động của đứa trẻ UIView

[UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:1.0]; 
    CGAffineTransform transform = CGAffineTransformMakeScale(1.8f, 1.8f); 
    worldMap.transform = transform; 
    worldMap.bounds.origin = newPos; 
    [UIView commitAnimations]; 

Trả lời

69

UIView của -convertPoint:toView:-convertPoint:fromView: nên làm việc cho bạn.

+0

Costique là chính xác, bạn không cần tự mình thực hiện phép toán ma trận. Bạn có toàn bộ hệ thống phân cấp khung nhìn để giúp bạn. – NSResponder

+0

câu trả lời tuyệt vời! – Envil

+0

câu trả lời là chính xác nhưng tôi muốn được tuyệt vời Nếu bạn giải thích toView fromView sự khác biệt – Thellimist