2009-03-26 41 views
16

Mục tiêu của tôi là có UITableViewCells mờ dần vào/ra khi chúng đang tiếp cận giới hạn của UITableView và sắp được che phủ/tiết lộ.Xác định tọa độ của một UITableViewCell trong khi cuộn

Cách tiếp cận tôi đã cố gắng là lấy tọa độ của UITableViewCell trong một sự kiện cuộn. Vấn đề là mỗi tế bào dường như là 0,0. Tôi đã cố gắng chuyển đổi các tọa độ để bảng cha và xem, nhưng họ vẫn đi ra tại 0,0. Vì vậy, nói chung, nếu bất cứ ai biết cách để có được tọa độ, hoặc một cách tốt hơn để đi về mờ dần UITableViewCells trong và ngoài dựa trên vị trí của họ, tôi sẽ đánh giá rất cao bất kỳ lời khuyên bạn có thể có.

Cảm ơn thời gian của bạn, Joel

+0

tôi cũng vậy, tôi đã gặp cùng một vấn đề, ngay cả trên UI khung có chiều rộng và chiều cao, nhưng kết quả trả về 0, 0, 0, 0 cho x, y, chiều rộng, chiều cao. – RainCast

Trả lời

60

Bước đầu tiên là sử dụng

CGRect rectInTableView = [tableView rectForRowAtIndexPath:indexPath];

đó sẽ báo cáo CGRect của một tế bào trong tableView. Tuy nhiên, giá trị này không thay đổi khi cuộn bảngView. Đây là vị trí liên quan đến hàng đầu tiên của bảng (và không phải là hàng hiển thị đầu tiên). Để có được vị trí của các tế bào trên màn hình, bạn phải chuyển đổi nó sang superviews hệ tọa độ sử dụng

CGRect rect = [tableView convertRect:rectInTableView toView:[tableView superview]];

Vì vậy, các dòng sau sẽ làm tất cả

CGRect rect = [tableView convertRect:[tableView rectForRowAtIndexPath:indexPath] toView:[tableView superview]]; .

+0

Thx vẫn hoạt động như một sự quyến rũ! –

+0

Tương đương với UICollectionView là gì? –

+0

Điều này không hiệu quả đối với tôi. – Zigglzworth

0

tôi nghi ngờ các tế bào được tổ chức trong vòng 'tế bào có kích thước' subviews của UITableView vì vậy bạn đang nhìn thấy một khung tương ứng với quan điểm đó.

Tôi không có câu trả lời thực sự cho bạn nhưng tôi khuyên bạn nên kiểm tra lớp đại biểu của UIScrollView: UIScrollViewDelegate. Nó phản ứng với – scrollViewDidScroll: và bạn có thể tự làm việc ra bù đắp của bạn từ đó. UIScrollView là một siêu lớp của UITableView.

Bạn có thể chuyển đổi điểm (chẳng hạn như nguồn gốc của bạn) thành các tọa độ của chế độ xem khác bằng phương pháp của UIView - (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view.

3

Tại sao không phải lớp phủ có độ dốc PNG trong suốt một phần trong UIImageView ít mờ hơn ở đầu và cuối?

Lộn xộn với bản vẽ ô trong cuộn bảng sẽ có hiệu suất lớn.

2

Bạn có thể gọi

- (CGRect)rectForRowAtIndexPath:(NSIndexPath *)indexPath; 

để có được rect của bất kỳ tế bào nhất định. Điều này sẽ chứa tọa độ của nó trong cấu trúc gốc trong rect.

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