2014-06-21 17 views
35

Theo tài liệu, cách lặp lại vĩnh viễn CABasicAnimation là đặt repeatCount thành HUGE_VALF.cách lặp lại hoạt ảnh mãi mãi trong Swift (HUGE_VALF)?

Nhưng trong Swift, HUGE_VALF gây ra lỗi biên dịch. Swift dường như không biết về thư viện chuẩn (hoặc bất cứ nơi nào liên tục cư trú).

Tôi phải làm gì bây giờ?

Trả lời

79

Đặt repeatCount thành Float.infinity. Điều này biên dịch và hoạt động.

Trong mọi xác suất, HUGE_VALF là giá trị kế thừa trong mọi trường hợp.

Tuy nhiên, thật ngạc nhiên khi các tên hằng số này không được Swift nhìn thấy. Tôi đã thử nhập <stdlib.h> vào tiêu đề bắc cầu nhưng không hiệu quả.


Nhưng xin vui lòng xem tại câu trả lời Martin R. Kể từ khi tôi đăng câu trả lời của mình, Apple đã nêu rõ câu trả lời ưa thích của họ một cách rõ ràng: sử dụng .greatestFiniteMagnitude. Nó gần như giống như .infinity nhưng không hoàn toàn!

+2

Tìm tốt. Tôi tin rằng bạn có nghĩa là 'repeatCount' trong cả Q & A mặc dù? –

+1

Tôi không có nghĩa là, trong thực tế là mã của tôi đã thực sự đặt 'repeatDuration' thành' HUGE_VALF'. Nhưng tôi có lẽ _should_ đã có nghĩa là! Tôi sẽ điều chỉnh. – matt

+0

'HUGE_VALF' được định nghĩa trong ''. Nhưng ngay cả khi tệp đó được thêm vào tệp tiêu đề cầu nối, * hằng số * này không được tiếp xúc với Swift. –

0

Tôi sử dụng giá trị "HUGE". nó là một var read_in readonly;

1

Các tài liệu hiện tại cho repeatCount tài sản của CAMediaTiming trạng thái:

Thiết khách sạn này để greatestFiniteMagnitude sẽ gây ra các hình ảnh động để lặp lại mãi mãi.

Và đó biên dịch không có vấn đề:

let ba = CABasicAnimation() 
ba.repeatCount = .greatestFiniteMagnitude 

Lý do mà HUGE_VALF không nhập khẩu vào Swift là nó được định nghĩa là một vĩ mô "không tầm thường" trong <math.h>:

# define HUGE_VALF __builtin_huge_valf() 
Các vấn đề liên quan