• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何绑定(bind) NSAttributeString(或 NSMutableAttributedString)

[复制链接]
菜鸟教程小白 发表于 2022-12-12 13:12:59 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想使用 MVVMCross 将属性字符串绑定(bind)到 UILabel。要绑定(bind)常规字符串,我会这样做:

set.Bind(MyLabel).To(vm => vm.MyString);

但我需要一个字符串,其中部分文本将使用一种颜色和一种字体大小,而另一部分将使用不同的颜色和不同的字体大小。如果这是静态的,没问题,我会在界面生成器中添加一个标签并将其设置为“属性”,然后在我需要的字符串的哪个部分设置我想要的任何字体选项。

所以我认为使用 Mvvmcross,我可能需要一个转换器来将我的源字符串转换为属性字符串,所以我尝试从 MvxValueConverter 创建一个转换器来执行此操作在其 Convert 方法中:

return new NSMutableAttributedString(value);

最终我会添加一些不同的属性。不幸的是,这不起作用。如果我这样设置绑定(bind):

set.Bind(MyLabel).To(vm => vm.MyString).WithConversion("MyConverter");

似乎 MvvmCross 只是对属性字符串执行了 .ToString 并显示为:

Some Text {}

注意 {} 不是原始字符串的一部分。

有没有办法在 MVVMCross 中绑定(bind)属性字符串?



Best Answer-推荐答案


如果你打电话

 set.Bind(MyLabel).To(vm => vm.MyString);

那么您将绑定(bind) UILabel 的默认属性,即 string 属性 Text。

您需要改为绑定(bind) AttributedText。尝试添加类似:

    .For(l => l.AttributedText)

这里有一些关于使用 AttributedText 的问题 - 例如 Underline text in UILabel in monotouch (porting ObjC code)

有关 mvx 数据绑定(bind)的更多信息,请参阅 https://github.com/slodge/MvvmCross/wiki/Databinding

关于ios - 如何绑定(bind) NSAttributeString(或 NSMutableAttributedString),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17934294/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap