2012-02-18 14 views
0

私はカスタムを作成したサンプルプロジェクトUIWebViewという名前のWebViewを作成しました。それらはUIViewControllerのビューに追加されます。 2つのWebViewは、viewDidLoadで初期化され、配列リストに追加されます。最初のものはサブビューとしてself.viewとして追加されます。ストーリーボードにはUIBarButtonがあり、これをタップすると、WebViewがサブビューとしてself.viewに追加されます。ここUIToolbarをUIWebViewに配置する方法

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    WebView *webView1 = [[WebView alloc] initWithFrame:self.view.bounds]; 
    WebView *webView2 = [[WebView alloc] initWithFrame:self.view.bounds]; 
    self.webViews = [NSArray arrayWithObjects: webView1, webView2, nil]; 

    UIWebView *webView = [self.webViews objectAtIndex:0]; 
    [self.view addSubview:webView]; 
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.google.com/"]]]; 
} 

ツールバーが図の底部(-50px)に添加するWebViewのの実装である:

@implementation WebView 

- (void) initToolbar { 
    UIToolbar *toolbar = [UIToolbar new]; 
    toolbar.barStyle = UIBarStyleBlackTranslucent; 
    toolbar.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin; 
    [toolbar sizeToFit]; 
    toolbar.frame = CGRectMake(0, self.frame.size.height-80, 320, 30); 

    [self addSubview:toolbar]; 
} 

- (id)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
     self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 
     [self initToolbar]; 
    } 
    return self; 
} 

@end 

問題はツールバーが持っていないこと、です2つのビュー内の同じ位置(最初のビューのように配置できます)。なぜ彼らは等しく配置されていないのですか?マイノート http://uploads.demaweb.dk/UIWebView.zip

:あなたがここに小さなサンプルプロジェクトをダウンロードすることができ

述べたように、2 のWebView年代は、現在のviewDidLoadに初期化されます。代わりに私が待っていて、最初に必要なときに初期化すれば、期待どおりに動作するようです。

答えて

1

self.frame.size.heightviewDidLoadは、ボタンをクリックして初期化すると同じではありません。あなたはviewDidLoadに直接UIWebViewを追加する場合は、あなたのUINavigationControllerUINavigationBarはまだロードされていないとself.viewのフレームが大きくなる(本当に、それはあるので)であることを「認知」されます。

これは、40.0(?)ポイントの違いを説明しています。

viewWillAppear:animatedメソッドでUIWebViewのインスタンスを初期化して(少なくとも最初の)インスタンス化することが考えられます。 (UIViewControllerは既にこの方法を実装しています)

関連する問題