使用 UIWebView 创建样式文本(视网膜屏幕上模糊)

Posted

技术标签:

【中文标题】使用 UIWebView 创建样式文本(视网膜屏幕上模糊)【英文标题】:Using UIWebView to create styled text (blurry on retina screen) 【发布时间】:2012-08-07 08:52:38 【问题描述】:

我对 ios 开发非常陌生,并且继承了一些代码。我遇到过这个:

htmlString = [NSString stringWithFormat:@"<html><head></head><style type=\"text/css\">body h1font-family:Helvetica Neue;font-weight:bold;font-size: 25px;background-image: -webkit-gradient(linear,left top, left bottom,from(white),to(CCFF00));-webkit-background-clip:text;-webkit-text-fill-color: transparent;h1:after text-shadow:5px 2px 2px #000; content:\"%@\"; color:#000; position:absolute; left:-2px;z-index:-1 </style><body><h1 style=\"\">%@</h1></body></html>",[loginValueClass sharedloginValueClass].userName,[loginValueClass sharedloginValueClass].userName];
web1.opaque = NO;
web1.backgroundColor=[UIColor clearColor];
web1.userInteractionEnabled = FALSE;
[web1 loadHTMLString:htmlString baseURL:nil];

其中 web1 的类型为 UIWebView。

它会生成一些带有渐变的样式文本。但是,它在视网膜屏幕上显得模糊。加载屏幕时也有明显的延迟。

我的问题是,这真的是创建此类样式文本的最佳方式吗?如果是,我该如何解决视网膜屏幕上的模糊问题?

【问题讨论】:

【参考方案1】:

在 Retina 显示器上比较模糊,因为 -webkit-background-clip:text 似乎没有考虑显示器的分辨率,所以剪辑是在较低的分辨率下完成的。

UIWebViews 仅在您有多种不同样式的文本时才有意义,例如红色的几个词,大字体的几个词等等。

对于简单的文本,UILabel 效率更高,并且可以很好地设置样式(阴影等)。您可以在此处找到示例:

StyleLabel: a UILabel with style (StyleLabel.h, StyleLabel.m) FXLabel

【讨论】:

感谢您的解释和解决方案。我已经实现了 FXLabel,它运行良好。

以上是关于使用 UIWebView 创建样式文本(视网膜屏幕上模糊)的主要内容,如果未能解决你的问题,请参考以下文章

拍摄 UIWebView 的快照/屏幕截图

如何获取 UIWebView 中选定文本的坐标(CGRect)?

当用户单击 UIWebView 内的文本字段时,出现键盘后屏幕不会向上移动

UIWebView 在旋转时接管屏幕

如何使用 UITableView 创建包含 UIWebView 的可滚动视图

仅 iPhone 应用程序中的 UIWebView 显示在 iPad 上