Swift 按钮中的按钮
Swift button in button
我想制作一个类似于“快捷方式”应用程序的按钮。
一个大按钮和另一个小按钮。
小按钮会打开一个新视图,大按钮只是 运行 例如一个简单的打印语句。
如果解决方案是一个 pod,我会非常高兴,但我认为这没什么困难,只是我没有注意 :)
我能够用这些东西做到这一点:
func add(secondButton: UIButton, buttonName: UIButton, secondButtonTitle: String, secondIsEnabled: Bool) {
secondButton.isEnabled = secondIsEnabled
print(secondIsEnabled)
if #available(iOS 13.0, *) {
secondButton.backgroundColor = UIColor.systemFill
secondButton.setTitle(secondButtonTitle, for: .normal)
if buttonName.isEnabled {
buttonName.backgroundColor = UIColor.systemRed
buttonName.tintColor = .systemGray4
} else {
buttonName.backgroundColor = UIColor.systemOrange
buttonName.tintColor = .systemGray2
}
}else {
// Fallback on earlier versions
// TODO: do
if buttonName.isEnabled {
} else {
buttonName.backgroundColor = color
}
}
buttonName.layer.cornerRadius = 4
view.addSubview(buttonName)
secondButton.tintColor = .black
secondButton.frame = CGRect(x: 5.0, y: 5.0, width: 60.0, height: 15.0)
secondButton.layer.cornerRadius = 4
buttonName.addSubview(secondButton)
buttonName.bringSubviewToFront(secondButton)
}
但是如果大按钮被禁用,小按钮也会被禁用
我想保留当前的设计
最后一个按钮之所以是红色是因为启用了
对不起,按钮标题是匈牙利语,我忘记翻译了,它们只是从 1 到 6 的数字
我的问题从这里开始:
有些情况下大按钮会被禁用。
但是我想一直启用小按钮,即使大按钮被禁用也是如此。
这可能吗?
如果我没记错的话,我的 google 搜索词应该是嵌套按钮,但我真的找不到任何东西
问题出在这一行:
buttonName.addSubview(secondButton)
将第二个按钮放在第一个按钮的前面,但不作为第一个按钮的子视图。
问题:
buttonName.addSubview(secondButton)
这会导致您的第二个按钮在大按钮被禁用时被禁用。相反,将两者都添加到主视图的子视图中,然后更改图层 属性,以便 small/second 按钮出现在大按钮上方。
解决方案:
buttonName.layer.zPosition = 0
secondButton.layer.zPosition = 1
view.addSubview(secondButton)
您可以尝试将其创建为包含两个按钮的 UIView (buttonsView)
- 覆盖整个视图的大按钮(mainButton)
- 具有特定框架的小按钮(secondaryButton)
所以每当你想禁用大按钮时,你可以指定buttonsView.mainButton.isEnabled = false,这样你就可以确定secondaryButton不受mainButton状态的影响
我想制作一个类似于“快捷方式”应用程序的按钮。
一个大按钮和另一个小按钮。
小按钮会打开一个新视图,大按钮只是 运行 例如一个简单的打印语句。
如果解决方案是一个 pod,我会非常高兴,但我认为这没什么困难,只是我没有注意 :)
我能够用这些东西做到这一点:
func add(secondButton: UIButton, buttonName: UIButton, secondButtonTitle: String, secondIsEnabled: Bool) {
secondButton.isEnabled = secondIsEnabled
print(secondIsEnabled)
if #available(iOS 13.0, *) {
secondButton.backgroundColor = UIColor.systemFill
secondButton.setTitle(secondButtonTitle, for: .normal)
if buttonName.isEnabled {
buttonName.backgroundColor = UIColor.systemRed
buttonName.tintColor = .systemGray4
} else {
buttonName.backgroundColor = UIColor.systemOrange
buttonName.tintColor = .systemGray2
}
}else {
// Fallback on earlier versions
// TODO: do
if buttonName.isEnabled {
} else {
buttonName.backgroundColor = color
}
}
buttonName.layer.cornerRadius = 4
view.addSubview(buttonName)
secondButton.tintColor = .black
secondButton.frame = CGRect(x: 5.0, y: 5.0, width: 60.0, height: 15.0)
secondButton.layer.cornerRadius = 4
buttonName.addSubview(secondButton)
buttonName.bringSubviewToFront(secondButton)
}
但是如果大按钮被禁用,小按钮也会被禁用
我想保留当前的设计
对不起,按钮标题是匈牙利语,我忘记翻译了,它们只是从 1 到 6 的数字
我的问题从这里开始:
有些情况下大按钮会被禁用。
但是我想一直启用小按钮,即使大按钮被禁用也是如此。
这可能吗?
如果我没记错的话,我的 google 搜索词应该是嵌套按钮,但我真的找不到任何东西
问题出在这一行:
buttonName.addSubview(secondButton)
将第二个按钮放在第一个按钮的前面,但不作为第一个按钮的子视图。
问题:
buttonName.addSubview(secondButton)
这会导致您的第二个按钮在大按钮被禁用时被禁用。相反,将两者都添加到主视图的子视图中,然后更改图层 属性,以便 small/second 按钮出现在大按钮上方。
解决方案:
buttonName.layer.zPosition = 0
secondButton.layer.zPosition = 1
view.addSubview(secondButton)
您可以尝试将其创建为包含两个按钮的 UIView (buttonsView)
- 覆盖整个视图的大按钮(mainButton)
- 具有特定框架的小按钮(secondaryButton)
所以每当你想禁用大按钮时,你可以指定buttonsView.mainButton.isEnabled = false,这样你就可以确定secondaryButton不受mainButton状态的影响