[已解决]swift代码出错:Cannot convert value of type CGFloat to expected argument type Float

[背景]
折腾:
期间,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’
如图:
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
floorf definition in darwin
很明显,我前面的猜测是对的。
所以,接着就是:
想办法,搞清楚:
Swift中如何把CGFloat转换为Float
4.去试了试:
let rect:CGRect=CGRectMake(0,0,floorf(Float(self.view.bounds.size.width/CGFloat(count))),self.tabBarHeight)

结果还是不行。

5.搜:
swift convert CGFloat to Float
参考:
去试试floor
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

如图:

floor pass in and return out all cgfloat

传入和返回的都是CGFloat。


发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量