2013-08-01 20 views
5

Làm thế nào tôi sẽ đi về việc cho phép một UITableView để trả lại khi nó đạt đến phía dưới, nhưng không phải là hàng đầu. Về cơ bản, tôi đang thêm một tiêu đề UIImageView làm tiêu đề phần TableView's của mình, nhưng hiện tại nếu tôi kéo lên trên cùng thì có một khoảng trống xấu xí giữa UIImageViewUINavigationBar của tôi.cho phép bouncing cho chỉ có một hướng UITableView

Tôi xem số question nhưng tôi không thực sự hiểu giải pháp. Liệu có ai đó tâm trí xây dựng?

Trả lời

10

Câu hỏi bạn liên kết đến có 2 giải pháp khác nhau. Khi đại biểu của chế độ xem bảng, bạn đã có quyền xem dạng xem, vì vậy bạn có thể triển khai một cái gì đó như (đây là câu trả lời không được gắn thẻ chính xác trong câu hỏi khác ...):

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    scrollView.bounces = (scrollView.contentOffset.y > 10); 
} 
+0

huh, tôi nhận được lỗi sau: Toán hạng không hợp lệ cho biểu thức nhị phân ('CGPoint' (aka 'struct CGPoint') và 'int'). Bạn có biết nó có nghĩa là gì không? – Apollo

+0

Đúng, điều đó có nghĩa là tôi đã bỏ lỡ 2 ký tự. Bạn không thể so sánh 'CGPoint' với' int' ... – Wain

+0

ah Tôi thấy =) Giải pháp này hoạt động gần như hoàn hảo. Nếu tôi tăng tốc rất nhanh lên, nó sẽ hơi rung lên một chút so với nền. Có cách nào để ngăn chặn điều đó xảy ra không? – Apollo

4

contentOffset là khoảng cách giữa nguồn gốc của khung hình của bạn (0, 0) và nguồn gốc của ô đầu tiên.

iOS: The default coordinate system has its origin at the upper left of the drawing area, and positive values extend down and to the right from it. You cannot change the default orientation of a view’s coordinate system in iOS—that is, you cannot “flip” it.

Ban đầu, contentOffset bằng không. Nếu bạn đã cuộn qua đầu danh sách (kéo ngón tay xuống dưới), thì contentOffset sẽ là số âm. Nếu bạn đã cuộn xuống danh sách (ô thứ nhất nằm phía trên khung), thì contentOffset sẽ là số dương.

#pragma mark - UIScrollViewDelegate 
-(void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    CGFloat maxOffset = (scrollView.contentSize.height - scrollView.frame.size.height); 
    CGFloat originOffset = 0; 
    // Don't scroll below the last cell. 
    if (scrollView.contentOffset.y >= maxOffset) { 
     scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, maxOffset); 

    // Don't scroll above the first cell. 
    } else if (scrollView.contentOffset.y <= originOffset) { 
     scrollView.contentOffset = CGPointZero; 
    } 
} 
Các vấn đề liên quan