2009-04-05 17 views
7

Tôi có một số UIScrollView có hình ảnh trong đó. Khi người dùng đến hình ảnh cuối cùng và vuốt ngón tay cho hình ảnh tiếp theo, tôi muốn hiển thị hình ảnh đầu tiên. Tương tự, khi người dùng ở hình ảnh đầu tiên và vuốt cho hình ảnh trước đó, tôi muốn hiển thị hình ảnh cuối cùng. Trong ngắn hạn, nó sẽ là một loại tròn của một điều.Thông tư UIScrollView

Làm cách nào để triển khai tính năng này?

Trả lời

6

Bạn cần phải làm việc với contentOffset và contentSize.

Mỗi khi có sự kiện cuộn, bạn có thể xem xét kiểm tra xem người dùng có đang nói currentLength - 1 hay không và nếu có, hãy thêm động vào ảnh cuộn.

Thao tác này sẽ hoạt động để có 5, mặc dù có thể khiến bạn gặp rắc rối về mặt bộ nhớ nếu bạn không phát hành các hình ảnh trước đó.

Tôi không nghĩ rằng giải pháp này sẽ làm việc với hình ảnh ít hơn chỉ số 0.

Cách khác ... phép nói rằng bạn có hình ảnh I1 để I5. Bố trí scrollview với các hình ảnh sau: I5 I1 I2 I3 I4 I5 I1

Tự động ghi vào I1 (chiều cao I5), không có hoạt ảnh.

Nếu người dùng bao giờ cuộn phía trên nhãn hiệu này, hãy tự động ghi chúng (không có hoạt ảnh) xuống cặp I5 I1 thứ hai. Nếu người dùng cố gắng cuộn xuống bên dưới I5 gần cuối, bạn có thể tự động quay trở lại cặp I5 I1 đầu tiên. Nếu bạn cuộn mà không có hình động, và với chiều cao chính xác, nó sẽ xuất hiện các hình ảnh là vô tận.

Tôi không chắc chắn nếu điều này sẽ rất nhạy, nhưng nó có thể cho hiệu quả mà bạn đang tìm kiếm.

+0

Đó là khá nhiều những gì tôi đã làm trong một trong các ứng dụng của tôi. Nó hoạt động tốt. –

+3

Điều này không có tác dụng nếu bạn cần chuyển động của chế độ xem liên tục. Trừ khi bạn có thể cuộn một nơi nào đó với một tốc độ cụ thể. – Dimitris

+0

Giải pháp này hoạt động tốt khi bật phân trang. – redent84

2

Điều quan trọng cần nhận ra là UIScrollView rất thông minh về những gì nó vẽ lại.

Bạn có thể di chuyển các bản xem phụ của nó xung quanh và miễn là các chế độ xem hiển thị trên màn hình không di chuyển hoặc thay đổi, không có vẽ lại. Bạn có thể thiết lập lại khung của bất kỳ subviews offscreen (và nếu cần thiết điều chỉnh contentOffset) mà không gây ra một vẽ lại.

Tất nhiên, việc bật phân trang giúp việc này dễ dàng hơn nhiều nhưng tôi chắc chắn bạn cũng có thể làm điều đó từ didScroll.

Bạn nên tạo 5 chế độ xem của mình để thêm chúng dưới dạng các bản xem trước và đặt độ lệch của chế độ xem cuộn tới chính giữa năm. Khi scrollView cuộn, sau đó bạn có thể chuyển đổi các phần phụ xung quanh - như một vòng tròn. Không cần phải xóa và thêm lại các bản xem trước, bạn chỉ có thể đặt lại các khung hình.

Đây là (trên một mức độ đơn giản) cách hoạt động của UITableView - nó sử dụng lại một tập hợp nhỏ chế độ xem ô và tiếp tục đặt lại bù đắp nội dung.