Closed fcgeek closed 8 years ago
你可以试试直接用这三个已经封装好的方法:https://github.com/ibireme/YYText/blob/master/YYText/Utility/NSAttributedString%2BYYText.m#L552-L673 ,或者仿照这几个方法来自己创建 Attachment。
也可以试试开启调试模式,看一下具体的排版结果:
YYTextDebugOption *debugOptions = [YYTextDebugOption new];
debugOptions.baselineColor = [UIColor redColor];
debugOptions.CTFrameBorderColor = [UIColor redColor];
debugOptions.CTLineFillColor = [UIColor colorWithRed:0.000 green:0.463 blue:1.000 alpha:0.180];
debugOptions.CGGlyphBorderColor = [UIColor colorWithRed:1.000 green:0.524 blue:0.000 alpha:0.200];
[YYTextDebugOption setSharedDebugOption:debugOptions];
@ibireme 非常感谢你的回答。我用了你封装好的方法,并且调试模式也打开了。 使用Top | Center时,图片后面的字符串换行会被遮挡,使用Bottom 时图片前面的字符串会被遮挡。 似乎是因为图片占位只有一行的原因,如何让它的占位和它的大小一致呢?
Top
Center
Bottom
text.appendAttributedString(NSAttributedString.attachmentStringWithContent(image, contentMode: .Center, attachmentSize: image.size, alignToFont: parser.defualtFont, alignment: .Center))
textView.attributedText = text
这。。是不是设置了什么 linePositionModifier 之类的东西,把行文本行固定了?
找到原因了,YQTextLinePositionModifier 限制了行高。 非常感谢你回答。
但有个新问题,换了一行的时候,空白了一大段。
这个。。这是怎么用的啊。。能贴一下具体的使用代码吗?
textView = YYTextView()
textView.textContainerInset = UIEdgeInsetsMake(12, 16, 12, 16)
textView.contentInset = UIEdgeInsetsMake(0, 0, YQComposeToolbar.toolBarHeight, 0)
textView.extraAccessoryViewHeight = YQComposeToolbar.toolBarHeight
textView.showsVerticalScrollIndicator = false
textView.alwaysBounceVertical = true
textView.allowsCopyAttributedString = false
textView.textParser = parser
textView.delegate = self
textView.inputAccessoryView = UIView()
textView.placeholderText = "写点什么吧..."
textView.placeholderTextColor = UIColor.lightGrayColor()
textView.placeholderFont = UIFont.systemFontOfSize(14)
var text:NSMutableAttributedString!
if textView.attributedText == nil {
text = NSMutableAttributedString()
} else {
text = NSMutableAttributedString(attributedString: textView.attributedText)
}
let image = UIImage(named:"")
image = image.resizedImageByWidth(UInt(self.width-32))
let attachmentString = NSAttributedString.attachmentStringWithContent(image, contentMode: .Center, attachmentSize: image.size, alignToFont: parser.defualtFont, alignment: .Center)
text.insertAttributedString(attachmentString, atIndex: selectedRange.location)
text.insertAttributedString(NSAttributedString(string: "\n"), atIndex: selectedRange.location + attachmentString.length)
selectedRange.location = selectedRange.location + attachmentString.length + 1
textView.attributedText = text
暂时没看出什么问题。。猜测有下面几种可能:
@ibireme 谢谢了,是我在TextParser 设置了字体的原因。
为何YYTextView 的 YYTextAttachment 图片会遮挡文字...
UITextView 效果
YYTextView 效果