2012-05-03 38 views
14

Tôi muốn tạo lại chế độ xem mà bạn có thể phóng to như ứng dụng Thư trên iPhone/iPad hoặc Sparrow khi xem email, ở trên cùng có khối thông tin và sau đó là UIWebView. Tôi rõ ràng có thể làm điều này một cách dễ dàng trong trình xây dựng giao diện hoặc mã, NHƯNG tôi muốn nó hoạt động giống như ứng dụng Thư.Phóng to UIWebView như Ứng dụng thư iOS

Bằng 'như ứng dụng thư', ý tôi là khi bạn thu nhỏ zoom (bất kỳ đâu trong chế độ xem), UIWebView là chế độ xem duy nhất thực sự thu phóng và nội dung trên cùng vẫn giữ nguyên kích thước. Khi bạn thu nhỏ quá xa và nhìn thấy nền, toàn bộ chế độ xem sẽ thu nhỏ (không chỉ UIWebview) và toàn bộ chế độ xem cũng cuộn.

Tôi đã thực hiện một số thử nghiệm và đã thử một số gợi ý, như chèn chế độ xem trên cùng ở đầu UIWebView, mở rộng chiều cao của UIWebView dựa trên kích thước nội dung nhưng điều này luôn kết thúc với chế độ xem trên cùng thu phóng quá, HOẶC chỉ UIWebView.

Tôi hy vọng điều này có ý nghĩa. Nó có thể thực sự đơn giản nhưng tôi đã cố gắng để sắp xếp này trong một thời gian và tắt mà tôi không thể nhìn thấy gỗ cho cây nữa.

Đây là ứng dụng MonoTouch, nhưng nếu có ai có ví dụ Mục tiêu-C hoặc bất kỳ thứ gì tôi có thể chuyển đổi và đăng lại.

+0

Bất kỳ cơ hội nào bạn có thể phân lớp 'MFMailComposeViewController' để thực hiện những gì bạn cần? Tính năng này được tích hợp để gửi email. – jonathanpeppers

Trả lời

7

Tôi đã làm điều đó cho ứng dụng của mình; nó không phải là đơn giản như nó âm thanh, nhưng trên iOS 5 nó nên được phần nào ít phức tạp hơn iOS 4. Có một cái nhìn của phần trên cùng bạn muốn có liên tục. Khi chế độ xem web của bạn hoàn tất tải HTML và hiển thị nó, hãy xem scrollView chế độ xem web và thêm chế độ xem của bạn dưới dạng chế độ xem phụ vào đó. Thêm chiều cao khung hình của khung nhìn trên cùng vào contentSize.height của chế độ xem cuộn và thêm chiều cao cho origin.y phần còn lại của các bản xem trước của chế độ xem cuộn (những chế độ xem không phải là chế độ xem trên cùng của bạn). Đặt bộ điều khiển xem của bạn làm đại biểu của chế độ xem cuộn của chế độ xem web. Bất cứ khi nào người dùng cuộn:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    CGRect frame = contentView.frame; 

    if(scrollView.contentOffset.x < 0) 
    { 
     frame.origin.x = 0; 
    } 
    else if((scrollView.contentOffset.x + contentView.frame.size.width) > scrollView.contentSize.width) 
    { 
     frame.origin.x = scrollView.contentSize.width - contentView.frame.size.width; 
    } 
    else 
    { 
     frame.origin.x = scrollView.contentOffset.x; 
    } 

    [contentView setFrame:frame]; 
} 

Điều này sẽ làm cho ứng dụng hoạt động chính xác như chế độ xem mail.app.

+0

Vấn đề thứ hai bạn có thể khắc phục bằng cách giữ cho chế độ xem của bạn ở đúng vị trí trong scrollView: didScroll :. Vấn đề thứ hai có thể được giải quyết bằng cách thêm một quan điểm thứ ba mà công việc là để giữ phần dưới màu trắng khi cần thiết. –

+0

@LeoNatan: Cảm ơn bạn đã trả lời! Bạn đã làm cho ngày của tôi! :) – Arkan

+0

Chúc mừng, cảm ơn bạn! –