按钮中的 Swift 按钮

Posted

技术标签:

【中文标题】按钮中的 Swift 按钮【英文标题】:Swift button in button 【发布时间】:2019-12-15 17:36:00 【问题描述】:

我想制作一个类似于快捷方式应用程序的按钮。 一个大按钮,另一个小按钮内。 例如,小按钮将打开一个新视图,大按钮只运行一个简单的打印语句。

如果解决方案是一个 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 搜索词将是嵌套按钮,但我真的找不到任何东西

【问题讨论】:

请重新整理您的问题。 【参考方案1】:

问题

 buttonName.addSubview(secondButton)

当大按钮被禁用时,这会导致您的第二个按钮被禁用。相反,将两者都添加到主视图的子视图中,然后更改图层属性,以便小/第二按钮出现在大按钮顶部的内部。

解决方案

buttonName.layer.zPosition = 0
secondButton.layer.zPosition = 1
view.addSubview(secondButton)

【讨论】:

【参考方案2】:

问题出在这一行:

buttonName.addSubview(secondButton)

将第二个按钮放在第一个按钮的前面,但不要作为第一个按钮的子视图。

【讨论】:

【参考方案3】:

您可以尝试将其创建为包含两个按钮的 UIView (buttonsView)

    大按钮覆盖整个视图 (mainButton) 带有特定框架的小按钮 (secondaryButton)

所以每当你想禁用大按钮时,你可以指定buttonsView.mainButton.isEnabled = false,这样就可以确保secondaryButton不受mainButton状态的影响

【讨论】:

以上是关于按钮中的 Swift 按钮的主要内容,如果未能解决你的问题,请参考以下文章

Swift - UITableView 中的标题阻止按钮交互

UICollectionViewCell 中的 Swift 3 按钮不响应触摸

StackView 中的按钮不起作用 - Swift

如何处理Swift 4中的按钮重叠?

UIPanGestureRecognizer 中的 Swift 获取按钮标题

使用 iOS Swift 隐藏三个按钮中的一个按钮