2011-12-13 33 views
41

Sự khác biệt giữa giới hạn và khung là gì? Trong thực tế, tại sao 'giới hạn' thậm chí tồn tại? Kích thước của 'giới hạn' bằng kích thước của khung hình, và nguồn gốc của giới hạn phải luôn là 0,0.Giới hạn của NSView so với khung

+1

Bản sao có thể có của [Ca cao: Sự khác nhau giữa khung và giới hạn là gì?] (Http://stackoverflow.com/questions/1210047/cocoa-whats-the-difference-between-the-frame-and-the -bề số) – daisy

Trả lời

90

Từ Hướng dẫn View and Window Architecture Lập trình dành cho iOS:

Một đối tượng xem theo dõi kích thước và vị trí của nó sử dụng khung của nó, giới hạn, và trung tâm thuộc tính:

Các khung tài sản chứa hình chữ nhật khung , chỉ định kích thước và vị trí của chế độ xem trong hệ thống tọa độ của người giám sát.

Các vọt bất động sản bao gồm các giới hạn hình chữ nhật, trong đó quy định cụ thể kích thước của view (và nguồn gốc nội dung của nó) trong riêng hệ thống địa phương tọa độ của điểm.

Thuộc tính trung tâm chứa điểm trung tâm đã biết của chế độ xem trong hệ thống tọa độ của hệ thống giám sát .

Dưới đây là một minh hoạ tốt giải thích rằng:

enter image description here

+7

Đúng. Xem câu hỏi của tôi. Các giới hạn sẽ luôn luôn là 0,0 cho nguồn gốc, và kích thước là giống hệt nhau. Vì vậy, tại sao có giới hạn ở tất cả sau đó, kể từ khi khung bao gồm tất cả các thông tin bị ràng buộc nào? – David

+2

Tôi chưa bao giờ thực sự xem xét điều này. Nhưng có vẻ rõ ràng rằng bạn cần hai tài liệu tham khảo. Bởi vì 40,40 sẽ không phù hợp với nguồn gốc của nội dung của khung nhìn, nhưng chính xác cho một tham chiếu về nơi khung nhìn nằm trong phạm vi giám sát. Tôi cũng sẽ đoán xem cần biết về không gian nội dung của chính nó (giới hạn) và đưa ra thông tin về vị trí của nó (Frame). Thông tin có thể giống nhau nhưng thực ra là hai thứ khác nhau. Nhìn vào chúng như là một khung nhìn của tham chiếu đến nó ở đâu. Và đó là Ranh giới tự định hình là – markhunte

+10

Mặc dù câu trả lời này nói chung là chính xác, vì đây là câu hỏi của Mac (được gắn thẻ 'NSView'), tài liệu liên quan là [Xem Hướng dẫn lập trình cho Cocoa] (http://developer.apple.com /library/mac/#documentation/Cocoa/Conceptual/CocoaViewsGuide/Introduction/Introduction.html) thay vì phiên bản iOS bạn đã liên kết. Lưu ý rằng trên Mac, hệ tọa độ được lật theo mặc định, với điểm gốc ở góc dưới bên trái. –

8

Các tài liệu táo trong câu trả lời đầu tiên không bao gồm những gì xảy ra với khung và các giới hạn sau khi quay để định hướng phong cảnh. Vì vậy, để được hoàn chỉnh hơn, bạn nên biết rằng khung của cửa sổ và xem gốc không thay đổi sau khi quay, nhưng giới hạn làm. See this article để biết thêm chi tiết và cẩn thận sử dụng khung làm tham chiếu cho bất kỳ điều gì khác ngoài hướng dọc.

Từ bài viết:

Nếu điều khiển xem của bạn có quan điểm không cửa sổ cấp cao (ví dụ, đó là phía dưới hầu hết các điểm điều khiển), sau đó

self.frame 

luôn là theo hướng dọc. Cái gì? Có, luôn trong ảnh chân dung - thay đổi nào là biến đổi chế độ xem của bạn. Vì vậy, bạn

self.bounds 

phải lúc nào cũng chính xác (giữ trong tâm trí điểm cuối cùng), nhưng

self.frame 

có thể hoặc không đưa ra tỉ lệ khung hình mà người dùng đang thực sự nhìn thấy, từ khung của mỗi điểm là được báo cáo theo các tọa độ của người giám sát và có tính đến bất kỳ biến đổi nào được áp dụng cho chế độ xem .

9

Nguồn gốc của giới hạn không phải lúc nào cũng là 0,0. Thật dễ hiểu sự khác biệt giữa khung và giới hạn, nếu bạn xem cách thay đổi giới hạn thuộc tính của UIScrollView trong khi cuộn. Ví dụ: bạn có UIScrollView với khung (0, 0, 320, 460), giới hạn (0, 0, 320, 460) và ContentSize (640, 460).Khung của nó luôn luôn sẽ là (0, 0, 320, 460), nhưng tọa độ X của giới hạn sẽ thay đổi tùy thuộc vào khoảng cách di chuyển.

Nó có thể hữu ích nếu bạn muốn thay đổi một cái gì đó trong bạn UIScrollView (tạo và loại bỏ các trang di động ví dụ), vì vậy bạn muốn biết khoảng cách di chuyển.

1

Khung xem là kích thước của hình chữ nhật mà nó có thể hoàn toàn vừa với. Nó luôn luôn có vẻ như là các giới hạn và khung là như nhau nhưng đó không phải là trường hợp. Hãy xem xét một hình vuông chỉ xoay khoảng 45 độ!

Ở đây khung của hình vuông được xoay này sẽ là hình chữ nhật để điền đầy đủ vào và vì vậy nó sẽ khác với giới hạn của đối tượng này.

P.S chủ yếu là trong các đối tượng và khung được xoay có xu hướng khác nhau.

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