2012-10-11 9 views
3

몇 가지 버튼이있는 간단한 펜촉이 있고 일부 HTML을 표시하고자하는 UIWebView이 있습니다. HTML 콘텐츠에 따라 높이를 UIWebView으로 변경하고 싶습니다. 그러나 나는 할 수 없다.HTML 내용에 따라 동적으로 UIWebView의 높이를 변경하는 방법은 무엇입니까?

내 펜촉은 다음과 같이 : My nib

mainViewController.h :

#import <UIKit/UIKit.h> 

@interface ibecViewController : UIViewController <UIWebViewDelegate> 
@property (weak, nonatomic) IBOutlet UIWebView *webV; 

@end 

내가 sizeToFit을 사용했지만, 그것이 작동하지 않습니다. 내 mainViewController.m :

#import "ibecViewController.h" 

@interface ibecViewController() 

@end 

@implementation ibecViewController 
@synthesize webV; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSString *myHTML = @"<html><body><h1>Hello, world!</h1><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p><p>Hello, world</p></body></html>"; 
    [webV loadHTMLString:myHTML baseURL:nil]; 

    [webV sizeToFit]; 
} 

- (void)viewDidUnload 
{ 
    [self setWebV:nil]; 
    [super viewDidUnload]; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); 
} 

- (void)webViewDidStartLoad:(UIWebView *)webView 
{ 
    NSLog(@"123"); 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSLog(@"456"); 
} 

@end 

내 두 번째 질문

: 왜 방법 webViewDidStartLoadwebViewDidFinishLoad 일을? 그럼에도 불구하고 내 컨트롤러가 UIWebViewDelegate을 따르는 것으로 나타났습니다. 나는 iOS에서 새로운 사람이다. WebView의 높이가 변경되지 않습니다. 그리고 내 응용 프로그램은 다음과 같습니다 : 첫 번째 질문에 My app

답변

0

답변 :

sizeToFit 대신 [webV setScalesPageToFit:YES]; 기능을 사용해보십시오. HTML 콘텐츠가 자동 크기 조정되어 웹보기 크기가됩니다. 이 함수는 상위 버전의 ios에만 존재합니다.

두 번째 질문에 대한 답변 webview가 정의 된 뷰 컨트롤러 (ibecviewcontroller)를 나타내는 자체 개체를 사용하여 webview 개체를 위임해야합니다. 위임이 완료되면 위임 함수를 사용할 수 있습니다. Xib를 통해이 작업을 수행하는 경우이 경우 webV 인 webview 객체를 파일 소유자 객체 또는 IB의 아이콘과 연결해야합니다. 나는 해결책을 발견

+0

답장을 보내 주셔서 감사합니다. 그러나 내가 원하는 것을 처음으로. setScalesPageToFit 사용 : 예는 WebView를 변경하지 않지만 HTML 크기를 변경합니다. 그리고 그것은 더 작아졌습니다. 두 번째 들어 방법 (void) viewWillAppear : BOOL) 애니메이션 { [[self webV] setDelegate : self]; } 및 - (void) viewWillAppear : (BOOL) 애니메이션 { [[self webV] setDelegate : self]; } –

1

하는 데 도움이

희망 .... 내 ibecViewController.m에서 나는 방법을

- (void)viewWillAppear:(BOOL)animated 
{ 
    [[self webV] setDelegate:self]; 
} 

를 작성했습니다 그리고 대리인으로 작동합니다. 내 방법 webViewDidStartLoadwebViewDidFinishLoad도 효과가있었습니다. 그럼 구현했습니다

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    [webV sizeToFit]; 
} 
+0

또한 webViewDidFinishLoad가 가끔 해고되는 것을 잊어 버렸기 때문에 onload 이벤트에 JS를 주입하면 obj-c로 더 잘 작동하도록 알리는 제안을 보았습니다. 그러나 클레임에 대해서는 확신 할 수 없지만, 그들은 확실합니다. 죄송합니다보다 더 안전 :) –