2008-10-19 26 views
10

Có thể chia tỷ lệ UIView xuống 0 (chiều rộng và chiều cao bằng 0) bằng CGAffineTransformMakeScale không?Tỉ lệ UIView bằng 0 khi sử dụng CGAffineTransformMakeScale

view.transform = CGAffineTransformMakeScale (0.0f, 0.0f);

Tại sao điều này lại xảy ra lỗi "<Error>: CGAffineTransformInvert: singular matrix."?



Cập nhật: Có một cách khác để thu hẹp một UIView để 0

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:0.3]; 
view.frame = CGRectMake(view.center.x, view.center.y, 0, 0); 

[UIView commitAnimations]; 

Trả lời

10

Có rất nhiều lần khi các khuôn khổ cơ bản cần đảo ngược ma trận biến đổi của bạn. Nghịch đảo của một ma trận là một số ma trận M 'như vậy mà các sản phẩm của ma trận M và ma trận nghịch đảo M' là xác định ma trận 1.

1 = M * M'

Ma trận zero không có một nghịch đảo, do đó thông báo lỗi.

8

Tôi không chắc nó có thể làm điều này; bạn sẽ bắt đầu chạy vào các vấn đề chia theo số không. Nếu bạn cố gắng làm điều này, bạn sẽ có tạo ra một biến đổi trông giống như:

 
    0 0 0 
    0 0 0 
    0 0 1 

Trong đó, khi áp dụng cho bất kỳ khác biến đổi, sẽ sản xuất biến đổi trên.

Tại sao không chỉ ẩn chế độ xem (nếu bạn muốn mở rộng tầm nhìn) hoặc đặt hệ số chia tỷ lệ thành cái gì đó như 0,001 (nếu bạn muốn mở rộng tỷ lệ đó)?

1

bạn có thể thử:

CGAffineTransform transform = myView.transform; 
myView.transform = CGAffineTransformScale(transform. 0.0f, 0.0f); 

hoặc nội tuyến toàn bộ điều.

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