我有UILabel
显示int
值,我希望如果值为千,如1000,则标签应显示1k和2k为2000及以后。如何实现这一目标?
答案 0 :(得分:6)
这个怎么样?
.controller('myCtrl', function ($scope) {
$scope.myLink = 'http://google.com';
$scope.style = {};
$scope.disableLink = function () {
$scope.myLink = '#';
$scope.style = {
zIndex: '10',
background: 'rgba(192,192,192,0.3)',
height: '100%',
top: '0',
left :'0',
right : '0',
pointerEvents : 'none'
}
};
$scope.disableLink(); //call this to disable
});
答案 1 :(得分:0)
有两种方式,或者三种方式。
第一 您可以在设置标签中的值之前以编程方式执行此操作。
第二 您可以通过int值的setter扩展UILabel,该值用于格式化并设置相应的字符串值。
第三 您继承UILabel并为int值添加setter。这样做格式化并设置适当的字符串。 扩展工作少了一些,但是子类化允许覆盖常规setter,这样你就可以抛出异常或任何你想要的东西。
这三者有一个共同点:你必须以编程方式进行格式化。 (int除以1000,然后使用常规字符串格式)
扩展或继承UILabel
使解决方案可重用。
答案 2 :(得分:0)
允许将格式数字转换为单词的扩展名-> 1.000 = 1K 1.500-> 1.5K 1.000.000-> 1M。 用法:myInt.abbreviateNumber()
extension Int {
func abbreviateNumber() -> String {
if self < 1000 {
return "\(self)"
}
if self < 1000000 {
var n = Double(self);
n = Double( floor(n/100)/10 )
return "\(n.description)K"
}
var n = Double(self)
n = Double( floor(n/100000)/10 )
return "\(n.description)M"
}
}