UIWebView: подогнать кадр к размеру, разрешить прокрутку в этом кадре на UISplitViewController - PullRequest
1 голос
/ 21 октября 2011

Эта проблема сводит меня с ума.

У меня есть UIWebView, который я пытаюсь сделать полным представлением на правой стороне UISplitViewController:

CGSize boundsSize = self.view.bounds.size;
self.webView = [[[UIWebView alloc] initWithFrame:CGRectMake(0, 0, boundsSize.width, boundsSize.height)] autorelease];
self.webView.delegate = self;
self.webView.opaque = NO;
self.webView.backgroundColor = [UIColor redColor];
self.webView.allowsInlineMediaPlayback = YES;
self.webView.dataDetectorTypes = UIDataDetectorTypeAddress | UIDataDetectorTypeLink | UIDataDetectorTypePhoneNumber;
self.webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin;
[self.view addSubview:webView];

Прежде всегоКак мне сделать так, чтобы размер кадра соответствовал виду, когда я не знаю ориентацию?Могу ли я автоматически изменить размер до нужного размера?

Далее, когда я загружаю свой HTML-код в свой веб-просмотр, я хочу, чтобы размер фрейма оставался неизменным (так же, как это делает UIScrollView), но этот новый контент могпрокручивал с этим кадром.Некоторый контент намного длиннее, другой нет.Итак, я попытался настроить кадр, но это только увеличивает размер моего кадра, а не размер содержимого.

- (void)webViewDidFinishLoad:(UIWebView *)aWebView {

    // Calculate the size of our webview
    CGRect frame = aWebView.frame;
    frame.size.height = 1;
    aWebView.frame = frame;
    CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
    frame.size = fittingSize;
    aWebView.frame = frame;

}//end

Разве это невозможно?Нужно ли размещать webView внутри UIScrollView и устанавливать для него contentSize высоту моего нового контента каждый раз, когда я загружаю его в мой webView?

Ответы [ 3 ]

2 голосов
/ 16 ноября 2012

Я думаю, что это все, что вам нужно для этой работы.

[articleWebView sizeThatFits: CGSizeZero];

0 голосов
/ 21 октября 2011

Кажется, мне пришлось вручную отрегулировать кадр при нагрузке:

    // Orientation
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];

    // Create frame
    CGRect frame;
    if (UIInterfaceOrientationIsLandscape(orientation)) {
        frame = CGRectMake(0, 0, 748, 1024);
    } else {
        frame = CGRectMake(0, 0, 768, 1022);
    }//end
0 голосов
/ 21 октября 2011

Посмотрел маску авторазмера. Я думаю, что это все, что вам нужно для этой работы.

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816-CH3-SW6

...