2012-02-25 34 views
26

Tôi có một số UIScrollView. Các scrollview.contentSize được thiết lập để chiều cao của tất cả các subviews trong UIScrollView. Khi chiều cao của contentSize nếu lớn hơn chiều cao của UIScrollView, nó sẽ cuộn hoàn toàn khi kéo chế độ xem. Khi chiều cao của contentSize nhỏ hơn chiều cao của UIScrollView, không có gì xảy ra khi tôi kéo chế độ xem.Làm cách nào để luôn cuộn UIScrollView?

Tôi nghĩ đó là hành vi tiêu chuẩn vì không có gì để cuộn. Nhưng tôi muốn, rằng UIScrollView đang di chuyển một chút anyway.

Một giải pháp khả thi là để đảm bảo rằng chiều cao của contentSize là không bao giờ ít hơn frame.height cộng với một biên độ nhỏ (ví dụ: 5px):

CGSize scrollSize = self.frame.size; 
int defaultHeight = self.frame.size.height + 5; 
int contentHeight = self.webView.frame.origin.y + self.webView.frame.size.height; 
scrollSize.height = MAX(defaultHeight, contentHeight); 
[self.scrollView setContentSize:scrollSize]; 

Có cách nào ít hackish để làm điều này ?

+0

Bạn chỉ muốn nó để trả lại? – jrtc27

+0

Tôi cho rằng bạn đã thử đặt 'scrollEnabled' thành' YES' theo cách thủ công, phải không? – dasblinkenlight

+0

Có, tôi chỉ muốn nó thoát - và có, 'scrollEnabled = YES' không hoạt động. – dhrm

Trả lời

71

Có hai thuộc tính trên UIScrollView rằng âm thanh như những gì bạn muốn:

@property(nonatomic) BOOL alwaysBounceVertical; // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag vertically 
@property(nonatomic) BOOL alwaysBounceHorizontal; // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag horizontally 

Đơn giản chỉ cần thiết lập một hoặc cả hai người trong số họ YES và bạn sẽ nhận được hiệu ứng ánh sáng dội.

này cũng có thể được thiết lập trong IB bằng cách kiểm tra "Bounce ngang" và/hoặc "Trả lại theo chiều dọc" hộp (s):

enter image description here

+4

Lưu ý rằng hộp kiểm "Bounces" solo phải được chọn ngoài "Bounce Horizontally" hoặc "Bounce Vertically". –

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