add rightview in UIButton

后端 未结 4 558
情歌与酒
情歌与酒 2020-12-14 21:48

I am trying to display some text and an image over a button. I am using the code from here

    let btnSort   = UIButton.buttonWithType(UIButtonType.System) a         


        
相关标签:
4条回答
  • 2020-12-14 22:09

    Subclass UIButton

    Override the layoutSubviews() function

    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)
    
         }
    }
    
    • Add a button to Storyboard
    • Add custom class to the button
    • Change button type to System
    • Set Title and image to the button
    0 讨论(0)
  • 2020-12-14 22:17

    Set only background color and display your text :

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

    OR

    btnSort.setTitleColor(UIColor.greenColor(), forState: UIControlState.Normal)
    
    0 讨论(0)
  • 2020-12-14 22:19

    the code I tried I got the output what the problem U faced.

    btnSort.backgroundColor = UIColor.redColor() --> set the background color and check

     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)
    

    and handle the action as

      func showSortTbl() {
        // do your stuff here
    
    }
    

    output

    0 讨论(0)
  • 2020-12-14 22:30

    Please check below code.

    Hope it will work for you.

    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 讨论(0)
提交回复
热议问题