2012-02-01 25 views
10

Tôi muốn xoay một cái nhìn lập trình cho rằng tôi đã sử dụng mã dưới đây:Chiều rộng và chiều cao tăng sau khi CGAffineTransformRotate áp dụng cho một UIView

CGAffineTransform rotateTransform = contentView.transform; 
CGAffineTransform rotatenewTransform = CGAffineTransformRotate(rotateTransform,aFloatRotate); 
contentView.transform = rotatenewTransform; 

Khi tôi làm điều này chiều rộng và chiều cao của contentView (UIView của tôi) tăng .

Tôi nên làm gì để contentView vẫn như cũ và nó cũng quay?

cảm ơn trước.

Ở đây tôi đang giải thích vấn đề của tôi trong biết thêm chi tiết:

contentView của tôi chứa một nút và một IMAGExem trong đó. contentView này được thêm vào trong nền và contentView này không được đi ra khỏi nền tảng này.

nhưng khi tôi xoay nội dung này bằng mã phía trên, chiều rộng và chiều cao của contentView sẽ tăng và do đó một số lần sẽ bị giới hạn nền.

Tôi hy vọng điều này sẽ rõ ràng đối với bạn. :)

+0

vui lòng chọn câu trả lời nếu đúng – GameLoading

+1

@fasttrack vẫn gặp phải sự cố tương tự. – Prashant

+0

Tôi tìm thấy một giải pháp cho điều này tôi đã lưu biến đổi của xem và làm việc tốt của nó ngay bây giờ. – Prashant

Trả lời

9

Chiều rộng và chiều cao (có lẽ bạn đang lấy từ frame.size) phải thay đổi vì chúng mô tả hình chữ nhật nhỏ nhất giữ toàn bộ khung xoay - nếu bạn xoay hình chữ nhật 45 độ, sau đó là hình chữ nhật để giữ hình chữ nhật xoay rộng hơn và cao hơn hình chữ nhật ban đầu.

Kích thước "thực" của chế độ xem xoay sẽ vẫn có sẵn trong hình chữ nhật bounds - điều này được thể hiện trong hệ tọa độ nội bộ của chế độ xem không được xoay. Vì vậy, nếu ban đầu của bạn frame là nguồn gốc (100.100), kích thước (100,50), chế độ xem xoay của bạn sẽ có một frame nơi nguồn gốc và kích thước là hình chữ nhật có thể phù hợp với chế độ xem xoay của bạn bên trong nó, được mô tả trong hệ thống tọa độ của superview. Nếu bạn đã thực hiện điều này:

CGFloat width = contentView.frame.size.width; 

Bạn sẽ nhận được giá trị đã thay đổi. Tuy nhiên, nếu bạn đã thực hiện điều này:

CGFloat width = contentView.bounds.size.width; 

Bạn sẽ nhận được giá trị 100 độ rộng ban đầu.

+0

bạn có thể vui lòng giải thích nó bằng một số mã ví dụ. – Prashant

+0

Tôi đã cố gắng thiết lập giới hạn của contentView nhưng con của nó vẫn nằm ngoài contentView. – Prashant

+0

Tôi muốn xoay chế độ xem nhưng chiều rộng và chiều cao của chế độ xem sẽ không thay đổi. – Prashant

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