19/08/2019, 10:45

IOS Animation Part 1

Animation là một thuộc tính thay đổi theo thời gian. Nói chung, điều này thường sẽ được nhìn thấy thuộc tính của một thực thể trong giao diện. Thuộc tính thay đổi có thể là vị trí: Một thực thể nào đó di chuyển hoặc thay đổi kích thước, không nhảy đột ngột, theo một tỷ lệ. . Một chế độ xem ...

Animation là một thuộc tính thay đổi theo thời gian. Nói chung, điều này thường sẽ được nhìn thấy thuộc tính của một thực thể trong giao diện. Thuộc tính thay đổi có thể là vị trí:

  • Một thực thể nào đó di chuyển hoặc thay đổi kích thước, không nhảy đột ngột, theo một tỷ lệ. .
  • Một chế độ xem backgroud có thể thay đổi từ đỏ sang xanh, không chuyển đổi màu đột ngột mà mờ dần từ màu này sang màu khác.
  • Hoặc có thể thay đổi từ mờ đục sang trong suốt, không biến mất đột ngột, nhưng mờ dần đi.

Nếu không có sự hỗ trợ, hầu hết chúng ta sẽ tìm thấy animation ngoài tầm với của chúng ta. Có quá nhiều những thay đổi - thay đổi theo tính toán, thời gian, làm mới màn hình, của luồng, và nhiều hơn nữa. Nhưng may mắn thay, mọi thứ hoàn toàn đã được cung cấp. Bạn không phải là người thực hiện thực thi như nào; bạn chỉ cần mô tả nó và bạn yêu cầu thực hiện và nó được thực hiện cho bạn. Bạn sẽ có animation theo yêu cầu. Yêu cầu một hình ảnh động có thể đơn giản như thiết lập một giá trị thuộc tính. hoặc việc thay đổi background myLayer.backgroundColor = UIColor.red.cgColor // hoạt hình thành màu đỏ. Animation rất dễ dàng vì Apple muốn tạo điều kiện cho bạn sử dụng nó. Animation không chỉ là sự tiện dụng mà nó làm rõ rằng một cái gì đó đang thay đổi hoặc đáp ứng. Nó rất quan trọng đối với thực thể trong giao diện iOS.

Drawing, Animation, and Threading

Animation dựa trên một sự thật thú vị về cách iOS vẽ lên màn hình: vẽ chúng tôi thực sự diễn ra tại thời điểm bạn đưa ra các lệnh vẽ của mình. Khi bạn đưa ra một lệnh yêu cầu một khung nhìn được vẽ lại, hệ thống ghi nhớ lệnh của bạn nhiệm vụ và đánh dấu chi tiết cần phải được vẽ lại. Sau đó, khi tất cả mã của bạn có chạy đến khi hoàn thành và hệ thống đã sẵn sàng, sau đó nó vẽ lại tất cả chi tiết cần vẽ lại. Hãy gọi đây là khoảnh khắc vẽ lại. Aniamtion hoạt động theo cùng một cách, và là một phần của cùng một quy trình. Khi bạn yêu cầu một Animation được thực hiện, hoạt động hoạt động bắt đầu xảy ra trên màn hình cho đến khi chi tiết được vẽ lại trong lần tiếp theo. (Bạn có thể buộc một hình ảnh động bắt đầu ngay lập tức, nhưng đây là bất bình thường.) Giống như một bộ phim (đặc biệt là phim hoạt hình cổ điển), hoạt hình có các khung hình. Một giá trị hoạt hình không thay đổi trơn tru và liên tục; nó thay đổi từng bước nhỏ, tạo ra ảo ảnh mượt mà, liên tục thay đổi. Ảo ảnh này hoạt động vì bản thân thiết bị trải qua định kỳ, nhanh chóng, làm mới màn hình thường xuyên hơn hoặc ít hơn - liên tục các khoảnh khắc vẽ lại và những thay đổi gia tăng liên tục giữa các lần. Apple gọi thành phần hệ thống chịu trách nhiệm cho việc này máy chủ Animation. Hãy nghĩ về bộ phim hoạt hình của người Viking, như là sự giao thoa giữa người dùng và người thực sự. Trong khi Animation kéo dài, bộ phim này được chồng lên các khung hình. khi nào Animation kết thúc, bộ phim bị xóa, cho thấy trạng thái của "thực tế" màn hình đằng sau nó. Người dùng không biết về tất cả điều này, bởi vì (nếu được thực hiện mọi thứ ngay lập tức) tại thời điểm bắt đầu, khung hình đầu tiên của bộ phim trông giống như trạng thái của Màn hình "Thực tế" tại thời điểm đó và tại thời điểm kết thúc, khung hình cuối cùng của bộ phim trông giống như trạng thái của màn hình "thực" tại thời điểm đó. Vì vậy, khi bạn tạo hiệu ứng chuyển động của chế độ xem từ vị trí 1 sang vị trí 2, bạn có thể gửi một chuỗi các sự kiện điển hình như thế này:

  • Bạn định vị lại chi tiết. Chế độ xem hiện được đặt ở vị trí 2, nhưng không có vẽ lại ngay, vì vậy nó vẫn được miêu tả ở vị trí 1.
  • Bạn đặt một hình ảnh động của chế độ xem từ vị trí 1 đến vị trí 2.
  • Phần còn lại của mã của bạn chạy để hoàn thành.
  • Khoảnh khắc vẽ lại đến khi hoàn tất. Nếu không có hình ảnh động, chế độ xem bây giờ sẽ đột nhiên được miêu tả ở vị trí 2. Nhưng có một hình ảnh động, và vì vậy animation xuất hiện. Nó bắt đầu với chế độ xem được mô tả ở vị trí 1, vì vậy đó là những gì người dùng nhìn thấy.
  • Hoạt hình được tiến hành, mỗi khung hình của Animation, mô tả chế độ xem ở vị trí trung gian giữa vị trí 1 và vị trí 2.
  • Hoạt hình kết thúc, miêu tả khung cảnh kết thúc ở vị trí 2. Animation bị xóa, cho thấy góc nhìn thực sự ở vị trí 2 nơi bạn đặt nó trong bước đầu tiên.

Máy chủ Animation hoạt động trên một luồng độc lập. Bạn phải lo lắng về các chi tiết nhưng bạn cũng bỏ qua nó. Mã của bạn chạy độc lập với và có thể đồng thời với Animation - bất kể ý nghĩa đa luồng là gì - vì vậy giao tiếp giữa hình ảnh động và mã của bạn có thể yêu cầu một số kế hoạch. Sắp xếp để mã của bạn được thông báo khi hoạt hình kết thúc là một nhu cầu phổ biến. Hầu hết các API hoạt hình cung cấp một cách để thiết lập. Nhiều Animation có thể được thiết lập (và thực hiện) cùng một lúc, nhưng cố gắng làm động hoặc thay đổi một tài sản đã tồn tại ở giữa hoạt hình có thể là một sự không liên tục. Các tác nhân bên ngoài có thể làm gián đoạn Animation của bạn. Người dùng có thể nhấp vào nút Home để yêu cầu ứng dụng của bạn xuống nền, hoặc một cuộc gọi điện thoại đến có thể đến trong khi đang thực hiện animation. Hệ thống xử lý nhất quán với tình huống này bằng cách đơn giản là celing tất cả các Animation đang thực hiện trong khi một ứng dụng được làm nền; đã được sắp xếp animation để chi tiết của bạn giả định các trạng thái cuối cùng animation thực hiện.

Image View and Image Animation

UIImageView cung cấp một hình thức Animtion đơn giản. Tuy nhiên, đôi khi nó có thể là tất cả những gì bạn cần. Bạn khởi tạo UIImageView với một mảng của UIImages. Mảng này đại diện cho các khung hình hình ảnh của một Animation hình đơn giản khi bạn gửi yêu cầu bắt đầu Animation, hình ảnh được hiển thị lần lượt, với tốc độ khung hình được xác định bởi thuộc tính animationDuration, lặp lại nhiều lần như đã chỉ định bởi thuộc tính animationRepeatCount (mặc định là 0, nghĩa là lặp lại mãi mãi), hoặc cho đến khi nhận được thông điệp stopAnimating. Trước và sau khi Animation, chế độ xem hình ảnh tiếp tục hiển thị hình ảnh của nó. UIImage cung cấp một dạng Animation song song với UIImageView: một hình ảnh có thể chính nó là một hình ảnh Animation. Bạn có thể tạo một hình ảnh hoạt hình bằng một trong các phương thức lớp UIImage này:

  • animatedImage(with:duration:) Như với các hình ảnh động của UIImageView, bạn cung cấp một loạt các UIImage. bạn cũng cung cấp thời lượng cho toàn bộ Animation.
  • animatedImageNamed(:duration:) Bạn cung cấp tên của một tệp hình ảnh duy nhất, như với init (named             </div>
            
            <div class=
0