0

我希望我的 uiwebview 在方向更改时更改 gif 图像,所以最初我使用以下代码加载第一个图像:

NSString * url = @"gif image url...";
int width = width of image;
int height = height of image;

NSString * htmlCode = [NSString stringWithFormat:@"<html><head><body leftmargin=\"0\" topmargin=\"0\"><img id=\"gifimg\" src=\"%@\" width=\"%i\" height=\"%i\"></body></html>", url, width,height];
[tmpWebView loadHTMLString:htmlCode baseURL:nil];

我将以下代码放入orientationChanged函数中:

NSString url = @"portrait image url...";
int width = width of portrait image;
int height = height of portrait image;

if (deviceOrientation == UIInterfaceOrientationLandscapeLeft) {
    url = @"landscape image url...";
    width = width of landscape image;
    height = height of landscape image;
}

NSString * jsString = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('img')[0].style.width= '%dpx';document.getElementsByTagName('img')[0].style.height= '%dpx';document.getElementsByTagName('img')[0].src= '%@'", width,height, url];

[webview stringByEvaluatingJavaScriptFromString:jsString];
[jsString release];
[webview setBackgroundColor:[UIColor clearColor]];
[webview setOpaque:NO];

所以图像在第一次显示时工作正常,当我旋转设备时,(横向或纵向)图像出现但其中一部分被截断。(每次旋转后,图像的一部分被忽略.....),任何主意?

感谢帮助

4

2 回答 2

0

这都是关于定位问题的,我想是的。在这里你应该做类似的事情

1)每当方向变化得到那个点并识别方向假设你有肖像然后调用你的方法来为肖像模式设置新图像,反之亦然。

这是我的逻辑,请仔细查看。

每当方向改变时调用下面的方法。在这里,您只需要按照您的要求允许改变方向,您还需要为横向设置图像。

 - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if(toInterfaceOrientation ==UIInterfaceOrientationPortrait||toInterfaceOrientation==UIInterfaceOrientationMaskPortraitUpsideDown);
   {
      [self setImagesForPortraitView];
   }
 else
    {
      [self setImagesForLandscapeView];
   }

   //setImagesForPortraitView and setImagesForLandscapeView would be your custom method which setUP the Images for different orientation
 //So here as Orientation chnages you can easily set the new image to Webview as you said.

}

注意:在这里,我只是为您当前的 REq 发布此答案,我不知道您如何管理方向......

我希望它可以帮助你。

于 2012-11-13T14:32:55.067 回答
0

那是因为当您按照 xib 文件中的指示加载 nib 文件时,uiimageview 很可能放在最后,所以我想您需要修改帧坐标以显示谁图像。如果您想测试这个理论,请尝试在图像末尾的 xib 文件中放入一个按钮并运行应用程序并旋转设备以显示在 lanscape 中,如果我的理论是正确的,则按钮不会显示。我希望这有帮助!祝你好运!

于 2012-11-13T13:41:53.047 回答