web-dev-qa-db-ja.com

UIButtonにrightviewを追加する

ボタンの上にテキストと画像を表示しようとしています。私は here のコードを使用しています

    let btnSort   = UIButton.buttonWithType(UIButtonType.System) as! UIButton
    btnSort.frame =  CGRectMake(2, 74, 140, 26)
    btnSort.tintColor = UIColor.whiteColor()
    btnSort.setImage(UIImage(named:"immgg"), forState: UIControlState.Normal)
    btnSort.imageEdgeInsets = UIEdgeInsets(top: 6,left: 100,bottom: 6,right: 14)
    btnSort.titleEdgeInsets = UIEdgeInsets(top: 0,left: -30,bottom: 0,right: 34)
    btnSort.setTitle("SORT", forState: UIControlState.Normal)
    btnSort.layer.borderWidth = 1.0
    btnSort.layer.borderColor = UIColor.whiteColor().CGColor
    btnSort.addTarget(self, action: Selector("showSortTbl"), forControlEvents: UIControlEvents.TouchUpInside)
    self.view.addSubview(btnSort)  

画像は適切な場所に表示されますが、テキストが表示されません。 titleEdgeInsetsが動作していないと思います。

12
Saty

私が試したコードは、Uが直面した問題を出力しました。

btnSort.backgroundColor = UIColor.redColor()->背景色を設定して確認

 let btnSort   = UIButton(type: UIButtonType.System) as UIButton! //this is Swift2.0 in this place use your code
    btnSort.frame =  CGRectMake(2, 74, 140, 40)
    btnSort.tintColor = UIColor.whiteColor()
    btnSort.setImage(UIImage(named:"youtube16x16.png"), forState: UIControlState.Normal)
    btnSort.imageEdgeInsets = UIEdgeInsets(top: 6,left: 100,bottom: 6,right: 14)
    btnSort.titleEdgeInsets = UIEdgeInsets(top: 0,left: -30,bottom: 0,right: 34)
    btnSort.setTitle("SORT", forState: UIControlState.Normal)
    btnSort.layer.borderWidth = 1.0
    btnSort.backgroundColor = UIColor.redColor() --> set the background color and check 
    btnSort.layer.borderColor = UIColor.whiteColor().CGColor
    btnSort.addTarget(self, action: Selector("showSortTbl"), forControlEvents: UIControlEvents.TouchUpInside)
    self.view.addSubview(btnSort)

Swift3

 let btnSort   = UIButton(type: .system)
    btnSort.frame =  CGRect(x: 2, y: 74, width: 140, height: 40)
    btnSort.tintColor = UIColor.white
    btnSort.setImage(UIImage(named:"youtube16x16.png"), for: .normal)
    btnSort.imageEdgeInsets = UIEdgeInsets(top: 6,left: 100,bottom: 6,right: 14)
    btnSort.titleEdgeInsets = UIEdgeInsets(top: 0,left: -30,bottom: 0,right: 34)
    btnSort.setTitle("SORT", for: .normal)
    btnSort.layer.borderWidth = 1.0
    btnSort.backgroundColor = UIColor.red //--> set the background color and check
    btnSort.layer.borderColor = UIColor.white.cgColor
    btnSort.addTarget(self, action: #selector(ViewController.showSortTbl), for: UIControlEvents.touchUpInside)
    self.view.addSubview(btnSort)

そしてアクションを

  func showSortTbl() {
    // do your stuff here

}

出力

enter image description here

28
Anbu.Karthik

サブクラスUIButton

layoutSubviews()関数をオーバーライドする

class CustomButton: UIButton {

    override func layoutSubviews() {
        super.layoutSubviews()

        guard imageView != nil else {
         return
        }

        imageEdgeInsets = UIEdgeInsets(top: 5, left: (bounds.width - 25), bottom: 5, right: 5)
        titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: imageView!.frame.width)

     }
}
  • ストーリーボードにボタンを追加する
  • ボタンにカスタムクラスを追加する
  • ボタンの種類をシステムに変更する
  • タイトルと画像をボタンに設定する
2

背景色のみを設定し、テキストを表示します。

let btnSort = UIButton(type: UIButtonType.System) as UIButton // Shift 2.0

btnSort.backgroundColor = UIColor.yellowColor()

[〜#〜]または[〜#〜]

btnSort.setTitleColor(UIColor.greenColor(), forState: UIControlState.Normal)
0
Jay Bhalani

以下のコードを確認してください。

それがあなたのために働くことを願っています。

let teamImage: UIButton = UIButton(frame: CGRect(x: 0, y: 75, width: 100, height: 50))
let imageTest = UIImage(named: "immgg")

teamImage.setTitle("HypnotoadTitle", forState: .Normal)
teamImage.setBackgroundImage(imageTest, forState: .Normal)
self.view.addSubview(teamImage)
0
iGatiTech