当方向改变时,UIWebView改变图像

时间:2012-11-13 13:30:42

标签: iphone objective-c uiwebview orientation-changes

我希望我的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];

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

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这就是关于orieitation问题,我想是的。 在这里你应该做像

这样的事情

1)每当定向chnages获得该点并识别方向 假设你有肖像然后调用你的方法来设置为肖像模式设置新图像的setUp,反之亦然。

这是我的逻辑,只是仔细看。

在方向变为Chnaged时调用方法下方。这里您只需要允许按照您的要求设置方向,因为您也需要设置横向图像。

 - (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发布此答案我不知道您如何管理方向......

我希望它可以帮到你。