ios - 圆角按钮被切断的问题
问题描述
我有一个自定义按钮类,用于获得圆角。该类适用于一些硬编码的长度/宽度,但不适用于其他。我根本无法使用动态大小的按钮让它工作。从图片中可以看出,按钮以各种方式被切断。知道我做错了什么吗?
class CustomButton: UIButton{
override init(frame: CGRect) {
super.init(frame: frame)
setupButton()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupButton()
}
func setupButton() {
setTitleColor(.white, for: .normal)
layer.cornerRadius = frame.size.height/2
layer.masksToBounds = true
}
}
谢谢你的帮助。
解决方案
发生这种情况是因为您在使用初始帧创建按钮之后设置了角。按钮的框架在布局过程中会发生变化,但它的角不会重绘。只需将 setupButton 调用添加到 layoutSubviews:
override func layoutSubviews() {
super.layoutSubviews()
setupButton()
}
此外,由于可能的性能问题,我建议您使用 UIBezierPath 方法而不是cornerRadius。
推荐阅读
- php - 无需插件即可扩展心愿单以使用 WooCommerce 产品
- android - 有什么方法可以防止/保护方法在配置更改期间不被破坏?
- php - Composer 要求超出内存限制
- c++ - 为什么我的数组值不在共享内存中交换?
- javascript - 如何使用 react-router 设置嵌套路由
- javascript - 何时在 React 本身上使用 Nextjs?
- bitbucket - Bitbucket - 所有提交的单次提交
- sql - SQLite SELECT all for Last 7 days
- python - Django 脆皮表单无法正常工作
- ruby - Ruby 中的 object.method 或 method(object)?