如何在UIWebView中水平和垂直居中HTML字符串

如何在UIWebView中水平和垂直居中HTML字符串,html,ios,css,objective-c,Html,Ios,Css,Objective C,我得到UTF-8格式的HTML字符串,我需要在webView中显示它。但是我希望字符串在UIWebView中水平和垂直居中我测试并制定了一个有效的解决方案。这就是我是如何获得期望输出的。这个函数CalculatehHeight是我写的。我遇到了不同的解决方案,但没有一个能提供垂直定心的理想解决方案。calculateHeight方法返回NSAttributeString的总高度,该高度将在将HTML文本转换为NSAttributeString时生成。通过提供所需的填充,此高度值进一步用于垂直居中

我得到UTF-8格式的HTML字符串,我需要在webView中显示它。但是我希望字符串在UIWebView中水平和垂直居中

我测试并制定了一个有效的解决方案。这就是我是如何获得期望输出的。这个函数CalculatehHeight是我写的。我遇到了不同的解决方案,但没有一个能提供垂直定心的理想解决方案。calculateHeight方法返回NSAttributeString的总高度,该高度将在将HTML文本转换为NSAttributeString时生成。通过提供所需的填充,此高度值进一步用于垂直居中文本

    //subCatTexts.text contains the HTML String
     NSString *myHTML = [NSString stringWithFormat:@"<!DOCTYPE html><html><head><style>.center 
{padding: %fpx 0;border: 0px solid green;text-align: center;}</style></head><body><div class=\"center\"><p>%@</p></div></body>
</html>",self.webView.frame.size.height/2.0-[self calculateHeight:subCatTexts.text],subCatTexts.text];
        [_webView loadHTMLString:myHTML baseURL:nil];
- (float) calculateHeight:( NSString *)html
{
    const char *c = [html cStringUsingEncoding:NSUTF8StringEncoding];
    NSData *data = [NSData dataWithBytes:c length:strlen(c)];
    NSString *string = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSAttributedString *attributedString = [[NSAttributedString alloc]
                                                initWithData: [string dataUsingEncoding:NSUnicodeStringEncoding]
                                                options: @{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType }
                                                documentAttributes: nil
                                                error: nil
                                                ];


   //-------------Calculating the height of the attributed String-----

   CGFloat width = self.view.frame.size.width; // whatever your desired width is
   CGRect rect = [attributedString boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
   return (rect.size.height);
}