[背景]
折腾:
期间,swift代码:
let count:Int = self.viewControllers.count let rect:CGRect = CGRectMake(0, 0, floorf(self.view.bounds.size.width / CGFloat(count)), self.tabBarHeight)
出错:
Cannot convert value of type ‘CGFloat’ to expected argument type ‘Float’
如图:
[解决过程]
1.自己看代码,突然发现,好像是:
对于函数floorf,传入的参数:
self.view.bounds.size.width / CGFloat(count)
然后是CFGloat
而其函数本事期望是Float?
2.去搜:
swift floorf
参考:
3.自己去看floor的定义:
public func floorf(_: Float) -> Float |
很明显,我前面的猜测是对的。
所以,接着就是:
想办法,搞清楚:
Swift中如何把CGFloat转换为Float
4.去试了试:
let rect:CGRect=CGRectMake(0,0,floorf(Float(self.view.bounds.size.width/CGFloat(count))),self.tabBarHeight)
结果还是不行。
let rect:CGRect = CGRectMake(0, 0, floor(self.view.bounds.size.width / CGFloat(count)), self.tabBarHeight)
结果就可以了,没有错误了
[总结]
此处代码报错是因为floorf的参数是Float的,但是此处传入的是CGFloat。
解决办法是:
把:
CGRectMake(0, 0, floorf(self.view.bounds.size.width / CGFloat(count)), self.tabBarHeight)
改为:
CGRectMake(0,0,floor(self.view.bounds.size.width/CGFloat(count)),self.tabBarHeight)
即可。
对于floor,去看定义:
是属于CoreGraphics的:
@warn_unused_result public func floor(x: CGFloat) -> CGFloat
如图:
传入和返回的都是CGFloat。
转载请注明:在路上 » [已解决]swift代码出错:Cannot convert value of type CGFloat to expected argument type Float