我正在尝试在属性字符串中获取要在textView上显示的自定义视图。我可以使用NSTextAttachment添加图像,但这不是我想要的。我有一个自定义视图,支持我希望在文本之间显示的Gif和动画PNG。
示例:
文本文本文本[customView]文本[customView]文本。 < - 在文本视图中,最好是在属性字符串
中我希望得到一些关于我应该专门搜索的指导。到目前为止,我已经看到了相关的问题......
答案 0 :(得分:0)
首先,使用NSAttributedString
或NSMutableAttributedString
在子视图中显示RichText(例如UITextView / UILabel)
然后,使用NSTextAttachment
替换文字中的图片脚本。
NSString *egText = @"hello [this_is_an_img_script]";
NSMutableAttributedString * destStr = [[NSMutableAttributedString alloc] initWithString:egText];
NSTextAttachment *attachment = [[NSTextAttachment alloc] initWithData:nil ofType:nil];
attachment.image = [UIImage imageNamed:[this_is_an_img_script]];
NSAttributedString *textAttachmentString = [NSAttributedString attributedStringWithAttachment:attachment]; //make your image to an attributedString
[destStr replaceCharactersInRange:range withAttributedString:textAttachmentString];
at last: [YourLabel(or YourTextView) setAttributedString:destStr];
BTW:如果您使用YYkit
作为RichText,则无法使用YYAttachMentString
替换NSAttachMentString
,这些是不同的事情,UITextView(UILabel)
无法加载YYAttachMentString
{1}}。
我正在寻找使用UITextView
来展示我的GIF的方法(因为YYKit
无法加载并使用网址预览netimage,YYKit
始终显示为空netImage
function calculateTotal() {
var totalCm = 0;
$("input[name='cm']").each(function() {
totalCm += $(this).val() ? Number($(this).val()) : 0;
});
$("input[name='TOTAL CUBIC METER']").val(totalCm);
// --------------------
var totalRate = 0;
$("input[name='rate']").each(function() {
totalRate += $(this).val() ? Number($(this).val()) : 0;
});
$("input[name='TOTAL RATE']").val(totalRate);
// --------------------
$("tr").each(function() {
if ($(this).children("td").length) {
$($($(this).children("td")[2]).children("input")[0]).val(
(($($($(this).children("td")[1]).children("input")[0]).val()) ? Number($($($(this).children("td")[1]).children("input")[0]).val()) : 0) +
(($($($(this).children("td")[0]).children("input")[0]).val()) ? Number($($($(this).children("td")[0]).children("input")[0]).val()) : 0)
)
}
});
// --------------------
var totalTaka = 0;
$("input[name='tk']").each(function() {
totalTaka += $(this).val() ? Number($(this).val()) : 0;
});
$("input[name='TOTAL TAKA']").val(totalTaka);
// --------------------
}
$("input").on('change', function() {
calculateTotal();
});
1}},cripes!)
答案 1 :(得分:-3)
将文本与图像可靠地混合是一项复杂的任务。多年前,随着网络浏览器的发明,它得到了解决。因此,您可以使用UIWebView来完成此任务。
或者,如果您有文本和图像的静态位置,则只能在主视图中使用几个控件。 F.E.一个低于另一个。
在任何情况下,您都应该使用第三方控件来显示您的GIF,因为UIImageView不支持它。