UIScrollView của tôi được điền với nội dung lớn và sau đó được phóng to bằng "setZoomScale: animated", sao cho nó vừa với khung cuộn. Chế độ xem xuất hiện thu nhỏ đúng cách và được định vị chính xác trong chế độ xem cuộn. Tuy nhiên, người dùng có thể cuộn ra bên ngoài nội dung (màu nền của scrollview hiển thị). Dường như anh ấy có thể cuộn đến cỡ nội dung gốc (như thể nội dung không bị thu nhỏ). Kỳ lạ, sau khi người dùng phóng to theo cách thủ công lần đầu tiên, mọi thứ hoạt động tốt và cuộn lại bị hạn chế về kích thước nội dung một lần nữa.Cuộn UIScrollView quá xa sau khi zoom ban đầu
Tôi đã tìm kiếm trên web và xem qua các tài liệu và ví dụ của Apple nhưng không thể tìm thấy bất kỳ ai có cùng vấn đề. Các ví dụ của Apple dường như cho thấy điều tương tự như tôi.
Nội dung của tôi là chế độ xem tùy chỉnh bắt nguồn từ UIView và có CALayer được thay thế bằng một CATiledLayer (như trong ví dụ của Apple). Bản vẽ tôi tự làm trong drawLayer: inContext :.
Dưới đây là một đoạn mã từ MyScrollViewController:
- (void)loadView {
CGRect frame = [UIScreen mainScreen].applicationFrame;
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:frame];
scrollView.maximumZoomScale=1.0;
scrollView.delegate = self;
... setup theContentView ...
scrollView.contentSize = theContentView.bounds.size;
scrollView.contentInset = UIEdgeInsetsMake(20, 20, 20, 20);
[scrollView addSubview:theContentView];
self.view = scrollView;
double zoomScale = 0.5; // hardcoded for testing
[scrollView setZoomScale:zoomScale animated:NO];
NSLog(@"zoomscale=%g contentview=%@ contentsize=%@", zoomScale, NSStringFromCGSize(theContentView.bounds.size), NSStringFromCGSize(scrollView.contentSize));
[scrollView release];
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return theContentView;
}
Tuyên bố NSLog cho thấy một thiết lập một cách chính xác contentSize và zoomscale ...
Hy vọng có cái gì đó rõ ràng là tôi đang thiếu ...
Đã có giải pháp cho ai chưa? tôi có cùng một vấn đề, chỉ là cách khác. My Scrollview là nhỏ để hiển thị hình ảnh chứa (tôi không thể di chuyển đến dưới cùng của hình ảnh) Nhưng sau khi phóng to một khi mọi thứ đều ổn. – Maverick1st
Tôi đã kết thúc thiết lập zoomScale trên runloop tiếp theo (thay vì trực tiếp từ loadView), hoạt động: "[self performSelector: @selector (initialZoom) withObject: nil afterDelay: 0];". Nhưng tôi cũng viết lại rất nhiều thứ khác, vì vậy tôi không chắc đó có phải là thứ duy nhất cần thiết hay không. – fishinear
Tôi đã có cùng một ý tưởng cuối cùng và nó hoạt động hoàn hảo. Một tiền thưởng bạn nhận được, khi thiết lập zoomscale trong viewDidAppear là, người dùng nhìn thấy một zoom hoạt hình và do đó biết, hình ảnh anh ta xem là zoomable :) – Maverick1st