dengzemiao / DZMeBookRead

支持项目使用!最完整小说阅读器Demo!仿iReader(掌阅),QQ阅读 ... 常用阅读器阅读页面,支持 翻页效果(仿真,覆盖,平移,滚动,无效果)、字体切换、书签功能、阅读记录、亮度调整、背景颜色切换 ...
MIT License
1.23k stars 325 forks source link

段落的首行缩进怎么处理 #27

Open chengongwen opened 6 years ago

chengongwen commented 6 years ago

@dengzemiao 你好

如果我是下载的纯文本TXT,然后排版的时候,采用的 // 参数:首行缩进两个字符 CGFloat emptylen = config.fontSize*2; paragraphStyle.firstLineHeadIndent = emptylen;//首行缩进

就会出现,本页的这段如果没有显示完全,会在下一页的首段也被缩进了,

怎么处理这个段落的首行缩进2个字符的问题。

谢谢大神

dengzemiao commented 6 years ago

每个段落不是本身就做好缩进2个文字么, 另外你假如需要每一个章节首行缩进 那么你需要重新写一个单独对于章节解析时候用的readAttribute

chengongwen commented 6 years ago

如果按照我上面的段落缩进的话,该段落在如果分布在前后两页的话,在下一页也被缩进了 @dengzemiao

chengongwen commented 6 years ago

我从网络获取的是TXT,纯文本字符串,怎么做好段落的首行缩进2个字符

例子: content = 十月,夜色微凉。 窗户未关,偌大的房间吹进丝丝冷风,略显凉意。 熟睡中的苏卿突然觉得肩头有些冷,便伸出手去扯落在腰间的薄被。 怎么不动?意识稍微清醒了些,酸痛的手腕继续扯了扯,还是不动。 带着怒火偏过头去,看到一张同样带着怒色的俊脸。 韩粤? 苏卿以为自己看错,却在下一秒清醒过来。 是,眼前人的确是韩粤,而她成为他的生活助理,快一周了。 苏卿快速伸还是不动。 带着怒火偏过头去,看到一张同样带着怒色的俊脸。 韩粤? 苏卿以为自己看错,却在下一秒清醒过来。 是,眼前人的确是韩粤,而她成为他的生活助理,快一周了。 苏卿快速伸\346手拉过放在床头的白色床单,裹着自己裸露在外的皮肤,带着一丝清冷的语气问那人, “我怎么会在这里?” 韩粤漆黑深沉的眸子紧紧的盯着苏卿,一手撑着脑袋看她,唇角冷笑一声,上下打还是不动。 带着怒火偏过头去,看到一张同样带着怒色的俊脸。 韩粤? 苏卿以为自己看错,却在下一秒清醒过来。 是,眼前人的确是韩粤,而她成为他的生活助理,快一周了。 苏卿快速伸\346手拉过放在床头的白色床单,裹着自己裸露在外的皮肤,带着一丝清冷的语气问那人, ... ;

chengongwen commented 6 years ago

1 2

dengzemiao commented 6 years ago

按照我Demo的那种段落首行缩进 不可以么? 然后出现什么情况! 你这个这样缩进肯定是不行 我那种是通过正则先就把一章给你缩进好了再给你去分页使用

dengzemiao commented 6 years ago

而你这种应该是每次获取一页都会进行首行分2个 我那种是把一章都排好段头在给你使用 我那种你遇到什么问题会导致你没使用?

chengongwen commented 6 years ago

你Demo的那种段落首行缩进在哪里?

dengzemiao commented 6 years ago

DZMReadParser.swift 中找到 ContentTypesetting(content:String) ->String

dengzemiao commented 6 years ago

我这种就是把段落中 多个换行或者多个换行嵌套空格 这样的替换成 换行加空格

dengzemiao commented 6 years ago

有的文字开头是没有空格 或者换行的 也就是什么符号都没 那你就可以在 ContentTypesetting(content:String) ->String 替换之前给每一章加我这个方法里面的 template: "\n  ") 这两个空格 /n可以不用 这样就好了

dengzemiao commented 6 years ago

你可以看看我这边的解析代码 ` // 章节名 readChapterModel.name = "开始"

                // 内容
                readChapterModel.content = ContentTypesetting(content: content.substring(NSMakeRange(0, location)))

                // 记录
                lastRange = range

                // 说不定没有内容 则不需要添加到列表
                if readChapterModel.content.isEmpty {continue}`
chengongwen commented 6 years ago

我获取的内容文章段落开头都是没有空格的,先使用每一章加我这个方法里面的 template: "\n  ") ,然后再使用ContentTypesetting(content:String) ->String吗?

chengongwen commented 6 years ago

非常成功,谢谢大神 @dengzemiao

// 使用正则表达式匹配并替换对应字符 NSString searchStr = mutStr; NSString regExpStr = @"\s\n+\s"; NSString replacement = @"\n  "; // 创建 NSRegularExpression 对象,匹配 正则表达式 NSRegularExpression regExp = [[NSRegularExpression alloc] initWithPattern:regExpStr options:NSRegularExpressionCaseInsensitive error:nil]; NSString *resultStr = searchStr;

// 替换匹配的字符串为 searchStr
resultStr = [regExp stringByReplacingMatchesInString:searchStr
                                             options:NSMatchingReportProgress
                                               range:NSMakeRange(0, searchStr.length)
                                        withTemplate:replacement];

return resultStr;
chengongwen commented 6 years ago

现在还有一个问题是,每页的最后一行,都会空一格,这个该怎么处理 @dengzemiao

1

dengzemiao commented 6 years ago

暂时没去看这个问题 最近比较忙 你可以先尝试解决 如果解决了 你可以在这里分享出来! 我记得群里有个人解决了。 最近一直忙也忘记问了

chengongwen commented 6 years ago

可以分享一下吗?搞了好久,还是没有想到好方法,谢谢 @dengzemiao

QQ昵称:清风。加了群,请通过一下。