1231212121
swift的类都是namespace类名,用NSStringFromClass是很不方便的,isKindOfClass要好用很多。
包括NSClassFromString一样很不方便,需要拼上项目名
或者用NSStringFromClass(object_getClass(obj))这个方法也可以获得类名字符串
我这个才是完美转换,前面的答案并不纯正(当前代码基于 Swift 2.1.1)。
override func layoutSubviews() {
super.layoutSubviews()
publishBtn.center = CGPoint(x: width * 0.5, height * 0.5)
let buttonWidth = width / 5
var i = 0
for view in subviews {
if !(view is UITabBarButton) {
continue
}
let tabBarButton = view as! UITabBarButton
tabBarButton.width = buttonWidth
tabBarButton.x = i * buttonWidth
if i > 1 {
tabBarButton.x += buttonWidth
}
i++
}
}
说实话,我蛮想踩一脚你这个问题,你要是熟悉 Objective-C 的话,入门 Swift 应该挺容易的。好好学学吧,我就不踩了~
还有,你这个 UITabBarButton
应该是你自定义的吧?还能直接 self.width、self.height 的?
func layoutSubviews() {
super.layoutSubviews()
// 发布按钮控件
self.publishBtn.center = CGPointMake(self.width * 0.5, self.height * 0.5)
// 布局四个TabBarButton控件
var buttonWidth: CGFloat = self.width / 5
var i: CGFloat = 0
for tabBarButton: UIView in self.subviews {
// 判断是否是TabBarButton类型
if !(NSStringFromClass(tabBarButton.self) == "UITabBarButton") {
}
tabBarButton.width = buttonWidth
tabBarButton.x = i * buttonWidth
if i > 1 {
tabBarButton.x += buttonWidth
}
i++
}
}
推荐网站:https://objectivec2swift.com/#/converter/code