2012-05-03 2 views
14

iPhone/iPad Mail 앱 또는 Sparrow와 같이 확대/축소 할 수있는보기를 다시 만들고 싶습니다. 맨 위에는 정보 블록이 있고 UIWebView가있는 전자 메일을 볼 수 있습니다. 분명히 인터페이스 빌더 나 코드에서이 작업을 쉽게 수행 할 수 있지만 메일 응용 프로그램처럼 작동하고 싶습니다.iOS Mail App과 같은 UIWebView 확대/축소

'메일 응용 프로그램과 비슷하다'는 말은 확대/축소 (보기의 아무 곳에서나)하면 UIWebView가 실제로 확대 된 유일한보기이고 최상위 콘텐츠는 같은 크기를 유지한다는 의미입니다. 너무 멀리 축소하여 배경을 볼 때 전체보기가 축소되고 (UIWebview뿐 아니라) 전체보기가 스크롤됩니다.

나는 몇 가지 실험을 해본 결과 이미 UIWebView 상단에 윗면보기를 삽입하고 콘텐츠 크기에 따라 UIWebView 높이를 확장하는 등의 제안 사항을 시도했지만 상단보기 확대/축소, 또는 UIWebView 만

나는 어떤 의미가 있기를 바랍니다. 정말 간단 할지도 모르겠지만 나무를 볼 수없는 나무를 더 이상 볼 수 없도록 이것을 정렬하려고했습니다.

MonoTouch 응용 프로그램 용이지만 Objective-C 예제가 있거나 아무 것도 변환하여 게시 할 수있는 사람이있는 경우.

+0

'MFMailComposeViewController'를 서브 클래스로 만들면 어떤 일을 할 수 있습니까? 이것은 전자 메일을 보내기 위해 내장되어 있습니다. – jonathanpeppers

답변

7

나는 우리의 응용 프로그램에 대해 그렇게했습니다. 소리가 나는 것처럼 단순하지는 않지만 iOS 5에서는 iOS 4보다 다소 복잡하지 않아야합니다. 상수를 보려면 일정 부분을 보도록하십시오. 웹보기가 HTML로드를 완료하고을 렌더링하면 웹보기의 scrollView이 표시되고 하위보기로보기가 추가됩니다. 상단보기의 프레임 높이를 스크롤보기의 contentSize.height에 추가하고 스크롤보기의 나머지 하위보기의 origin.y (사용자의 톱보기가 아닌)의 높이를 추가하십시오. 보기 컨트롤러를 웹보기의 스크롤보기의 대리자로 설정하십시오. 사용자가 스크롤 할 때마다 :

- (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]; 
} 

이렇게하면 mail.app보기와 똑같이 동작해야합니다.

+0

두 번째 문제는 scrollView : didScroll :의 올바른 위치에 뷰를 유지하여 수정할 수 있습니다. 두 번째 문제는 세 번째보기를 추가하여 해결할 수 있습니다. 세 번째보기는 필요한 경우 맨 아래 부분을 흰색으로 유지하는 것입니다. –

+0

@LeoNatan : 답장을 보내 주셔서 감사합니다! 너는 내 하루를 보냈다! :) – Arkan

+0

건배, 고마워요! –