UIWebView没有调整大小

时间:2013-07-26 16:09:12

标签: objective-c cocoa-touch uiwebview

我已经尝试了一切我能想到的让我的UIWebView在Iphone 4,5和Ipads上自动填充屏幕。我已经使用了自动调整大小的掩码,尝试根据设备以编程方式设置帧,但仍然注意到了。

这不是加载HTML的缩放问题,滚动条实际上​​不是它们应该在的位置。

enter image description here

我做错了什么?我知道不应该这么困难。

@interface webview ()

@end

@implementation webview

@synthesize weber;

@synthesize suppressesIncrementalRendering;

static NSString* titled;
static NSString* urlholder;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization

    }
    return self;
}

-(void)viewWillAppear:(BOOL)animated
{
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
}


-(void)viewDidDisappear:(BOOL)animated
{
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.weber.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

    self.title= titled;


    NSString *fullURL = urlholder;
    NSURL *url = [NSURL URLWithString:fullURL];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
    [weber setSuppressesIncrementalRendering:YES];
    [weber loadRequest:requestObj];

    wasLoaded = NO;
    alertWasShown = NO;
    weber.delegate = self;
}


- (void)webViewDidStartLoad:(UIWebView *)webView {
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    wasLoaded = YES; // Indicates that it finished loading.
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
}



-(void) setttl: (NSString*) titler
{
    titled= titler;
}

 -(void) setURL: (NSString*) url
 {
    urlholder= url;
 }

4 个答案:

答案 0 :(得分:0)

在您的代码中没有任何地方可以看到您在哪里设置webview的初始框架。调整大小的蒙版确定它的调整大小,但它们不确定视图的大小。

看起来您正在使用xib,尝试将webview的大小设置为在其superview中正确显示。然后使用InterfaceBuilder在“大小”检查器中设置调整大小属性。

或者,您可以通过编程方式设置大小:

self.weber.frame = CGRectMake(0.0, 0.0, 200.0, 700.0);

答案 1 :(得分:0)

假设超级视图填满了屏幕,您应该在frame中将UIWebView bounds作为其父级的viewDidLoad分配:

self.weber.frame = self.view.bounds;

如果以编程方式实例化UIWebView,代码将如下所示:

-(void)viewDidLoad
{
    [super viewDidLoad];

    self.weber = [UIWebView new];
    self.weber.frame = self.view.bounds;
    [self.view addSubview:self.weber];
}

答案 2 :(得分:0)

我刚遇到这个问题,因为我遇到了类似的问题。为我修复的是在viewDidLayoutSubViews而不是viewDidLoad中设置我的UIWebView框架。这是由entonio在其他一个答案的评论中提出的,但我把它作为答案放在这里,以便更容易找到是否有其他人出现。

答案 3 :(得分:0)

故事板似乎会覆盖任何调整UIWebView大小的代码。如果您正在尝试将动态html / css加载到UIWebView中,并且它不会在方向更改上调整大小:尝试取消选中" autolayout"设置。

  1. 选择.storyboard文件
  2. 转到身份qand类型窗口(请参阅链接快照)
  3. 取消选中"使用自动布局"在Interface Builder文档部分。
  4. 来源:http://forums.macrumors.com/showthread.php?t=1705519