2017-11-12 11 views
0

ボタンをクリックすると素敵なボーダーが追加されますので、一度に1つのボーダーしか必要ではないので、ボーダーを削除する方法はありません。幅を0などに設定しようとしました。Swiftはボタンを削除しますBottomBorder

@IBAction func podsButtonClicked(_ sender: UIButton) { 
    podsButton.addBottomBorderWithColor(color: greenColor(), width: 3) 
} 

@IBAction func subscribedButtonClicked(_ sender: UIButton) { 
    subscribedButton.addBottomBorderWithColor(color: greenColor(), width: 3) 
} 

@IBAction func subscribersButtonClicked(_ sender: UIButton) { 
    subscribersButton.addBottomBorderWithColor(color: greenColor(), width: 3) 
} 

各ボタンで、それ以外の境界線を削除したいと思います。

+0

addBottomBorderWithColorメソッドはApple APIではありません。どのライブラリでそれを定義しているか教えてください。ドキュメントをどのように削除しているかを確認することをお勧めします。彼らがそれを適用する方法をチェックしてください。あなた自身でそれを削除することができます – Yitzchak

答えて

1

addBottomBorderWithColorは、あなたのプロジェクトにUIButtonという拡張子として追加した方法です。下境界線を追加する方法に応じて、次のいずれかを実行する必要があります。

ボタンの下端をサブビューとして追加する場合は、以下を行うメソッドを作成する必要があります。

func removeBottomBorder() { 
    bottomBorder.removeFromSuperview() 
} 

代わりに、あなたは副層として下の境界線を追加している、場合、あなたはこれを行う必要があります:

func removeBottomBorder() { 
    bottomBorder.removeFromSuperlayer() 
} 

私は、あなたが下の境界を管理するカスタムボタンサブクラスを作成してお勧めしますそれは多かれ少なかれこれに似ています:

class BottomBorderButton: UIButton { 
    var bottomBorder: UIView? // If you are using a CALayer, use that instead 

    func addBottomBorderWithColor(color: UIColor, width: Int) { 
     let bottomBorder = UIView() // If you are using a CALayer, use that instead 
     // Use whatever you have already implementeds here 
     // ... 
     self.bottomBorder = bottomBorder 
    } 

    func removeBottomBorder() { 
     self.bottomBorder?.removeFromSuperview() 
     // If you use a CALayer, use the following instead 
     // self.bottomBorder?.removeFromSuperlayer() 
    } 
} 

プロジェクトで、必要に応じてUIButtonの代わりにBottomBorderButtonを使用します。

+0

ええ、私はクラスの拡張があることを認識しましたが、プロパティを格納することはできませんでした。あなたのソリューションは美しく機能しました。ありがとうございました。 – SalokinSwift

関連する問題