01、使用UIWebView调整行距
添加 UIWebView,并对 WebView 应用如下代码:
//下面两行协助 UIWebView 背景透明化,这两属性可以在 xib 中进行设置
webview.backgroundColor = [
UIColor
clearColor];
//但是这个属性必须用代码设置,光 xib 设置不行
webview.opaque =
NO
;
//这行能在模拟器下明下加快 loadHTMLString 后显示的速度,其实在真机上没有下句也感觉不到加载过程
webview.dataDetectorTypes =
UIDataDetectorTypeNone
;
//下面的 backgroud-color:transparent 结合最前面的两行代码指定的属性就真正使得 WebView 的背景透明了
//而后的 font:16px/18px 就是设置字体大小为 16px, 行间距为 18px,也可用 line-height: 18px 单独设置行间距
//最后的 Custom-Font-Name 就是前面在项目中加上的字体文件所对应的字体名称了
NSString
*webviewText = @
"<style>body{margin:0;background-color:transparent;font:16px/18px Custom-Font-Name}</style>"
;
NSString
*htmlString = [webviewText stringByAppendingFormat:@
"%@"
, textview.text];
[webview loadHTMLString:htmlString baseURL:
nil
];
//在 WebView 中显示本地的字符串
//下面两行协助 UIWebView 背景透明化,这两属性可以在 xib 中进行设置
webview.backgroundColor = [
UIColor
clearColor];
//但是这个属性必须用代码设置,光 xib 设置不行
webview.opaque =
NO
;
//这行能在模拟器下明下加快 loadHTMLString 后显示的速度,其实在真机上没有下句也感觉不到加载过程
webview.dataDetectorTypes =
UIDataDetectorTypeNone
;
//下面的 backgroud-color:transparent 结合最前面的两行代码指定的属性就真正使得 WebView 的背景透明了
//而后的 font:16px/18px 就是设置字体大小为 16px, 行间距为 18px,也可用 line-height: 18px 单独设置行间距
//最后的 Custom-Font-Name 就是前面在项目中加上的字体文件所对应的字体名称了
NSString
*webviewText = @
"<style>body{margin:0;background-color:transparent;font:16px/18px Custom-Font-Name}</style>"
;
NSString
*htmlString = [webviewText stringByAppendingFormat:@
"%@"
, textview.text];
[webview loadHTMLString:htmlString baseURL:
nil
];
//在 WebView 中显示本地的字符串
执行之后显示的就是第一个图中的效果了。有可能出现在 iOS4 下背景未能透明化的问题,是可能,我有碰到过,也许哪里设置的问题。
注意,很重要的一点,上面 iOS4 下背景可能不透明的情况是因为:虽然可以在 xib 中对 UIWebView 设置它的 backgroundColor 为 clearColor,但是 Xcode 似乎不怎么认账,所以必须在代码中用 webview.backgroundColor = [UIColor clearColor]; 设置 UIWebView 的背景才成,opaque 在 xib 还是在代码中设置都行。
另外,也可以用 background-color: rgba(0,0,0,0) 样式,最后一个 0 表示 Alpha 值,即完全透明,甚至是用 background-color:hsla(120,50%,50%,0) 也是可行的。
对于 UIWebView 来说,你能够应用 HTML5 很多特性,所以不要求有很规范的 HTML 格式,像无需写成 <html><head>....... 那样。
尝试了用 @font-face 来使用自定义字体,未能成功,再就是对 UIWebView 的用户交互及滚动条风格调一调,可让它更像是个 UITextView,完全的代替 UITextView 来显示一段文字某些地方有可能仍需作微调。
02、UITextView 和UILable 设置行间距
![此博文包含图片](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
UITextView 和UILable它本身是没有控制行高的。很多人说用Uiwebview,但我觉得那不好用,要用html布局麻烦,占内存。也有人说drawatpoint,但
发现画中文的时候也很占内存,我就投机取巧一下吧
UILable 跟下面的用法一样的自己改一下
- //
DrawAtPoint - //
- //
Created by xia kejie on 12-5-13. - //
Copyright (c) 2012年 __MyCompanyName__. All rights reserved. - //
-
- #import
"ViewController.h" - #define
LINENUM 20 //每行字数 - #define
LINEHEIGHT 30 //行高 - @interface
ViewController () -
- @end
-
- @implementation
ViewController -
- -
(void)viewDidLoad - {
-
int begin=0; -
NSString *partialString; -
-
[super viewDidLoad]; -
NSString* str=@"东南形胜,三吴都会,钱塘自古繁华。烟柳画桥,风帘翠幕,参差十万人家。云树 绕堤沙,怒涛卷霜雪,天堑无涯。市列珠玑,户盈罗绮,竞豪奢。重湖叠清嘉,有三秋桂子,十里荷花。羌管弄晴,菱歌泛夜,嬉嬉钓叟莲娃。千骑拥高衙,乘醉听箫鼓,吟赏烟霞。异日图将好景,归去凤池夸。云树 绕堤沙,怒涛卷霜雪,天堑无涯。市列珠玑,户盈罗绮,竞豪奢。重湖叠清嘉,有三秋桂子,十里荷花。羌管弄晴,菱歌泛夜,嬉嬉钓叟莲娃。千骑拥高衙,乘醉听箫鼓,吟赏烟霞。异日图将好景,归去凤池夸。"; -
-
int num = str.length/LINENUM; -
NSLog(@"%d",str.length); -
NSLog(@"%d",num); -
for (int i=0; i<=num; i++) { -
UITextView* textview=[[UITextView alloc]init]; -
NSLog(@"%d-----",begin); -
-
if(i==num) -
partialString=[str substringWithRange:NSMakeRange(begin,str.length%LINENUM)]; -
else -
partialString=[str substringWithRange:NSMakeRange(begin,LINENUM)]; -
-
textview.backgroundColor=[UIColor clearColor]; -
textview.text=partialString; -
textview.frame=CGRectMake(0, 30+i*LINEHEIGHT, 300, 30); -
[self.view addSubview:textview]; -
-
begin+=LINENUM; -
NSLog(@"%@",partialString); -
-
-
} -
// Do any additional setup after loading the view, typically from a nib. - }
-
-
-
-
-
-