Create a button programmatically and set a background image

前端 未结 11 1094
自闭症患者
自闭症患者 2020-12-07 17:44

When I try creating a button and setting a background image in Swift:

let button   = UIButton.buttonWithType(UIButtonType.System) as UIButton
    button.fram         


        
相关标签:
11条回答
  • 2020-12-07 17:49
    let btnRight=UIButton.buttonWithType(UIButtonType.Custom) as UIButton
    btnRight.frame=CGRectMake(0, 0, 35, 35)
    btnRight.setBackgroundImage(UIImage(named: "menu.png"), forState: UIControlState.Normal)
    btnRight.setTitle("Right", forState: UIControlState.Normal)
    btnRight.tintColor=UIColor.blackColor()
    
    0 讨论(0)
  • 2020-12-07 17:55

    To set background we can no longer use forState, so we have to use for to set the UIControlState:

    let zoomInImage = UIImage(named: "Icon - plus") as UIImage?
    let zoomInButton = UIButton(frame: CGRect(x: 10), y: 10, width: 45, height: 45))
    zoomInButton.setBackgroundImage(zoomInImage, for: UIControlState.normal)
    zoomInButton.addTarget(self, action: #selector(self.mapZoomInAction), for: .touchUpInside)
    self.view.addSubview(zoomInButton)
    
    0 讨论(0)
  • 2020-12-07 17:57

    This is how you can create a beautiful button with a bezel and rounded edges:

    loginButton = UIButton(frame: CGRectMake(self.view.bounds.origin.x + (self.view.bounds.width * 0.325), self.view.bounds.origin.y + (self.view.bounds.height * 0.8), self.view.bounds.origin.x + (self.view.bounds.width * 0.35), self.view.bounds.origin.y + (self.view.bounds.height * 0.05)))
    loginButton.layer.cornerRadius = 18.0
    loginButton.layer.borderWidth = 2.0
    loginButton.backgroundColor = UIColor.whiteColor()
    loginButton.layer.borderColor = UIColor.whiteColor().CGColor
    loginButton.setTitle("Login", forState: UIControlState.Normal)
    loginButton.setTitleColor(UIColor(red: 24.0/100, green: 116.0/255, blue: 205.0/205, alpha: 1.0), forState: UIControlState.Normal)
    
    0 讨论(0)
  • 2020-12-07 17:59

    SWIFT 3 Version of Alex Reynolds' Answer

    let image = UIImage(named: "name") as UIImage?
    let button = UIButton(type: UIButtonType.custom) as UIButton
    button.frame = CGRect(x: 100, y: 100, width: 100, height: 100)
    button.setImage(image, for: .normal)
    button.addTarget(self, action: Selector("btnTouched:"), for:.touchUpInside)
            self.view.addSubview(button)
    
    0 讨论(0)
  • 2020-12-07 18:00

    Try below:

    let image = UIImage(named: "ImageName.png") as UIImage
    var button   = UIButton.buttonWithType(UIButtonType.System) as UIButton
    button.frame = CGRectMake(100, 100, 100, 100)
    button .setBackgroundImage(image, forState: UIControlState.Normal)
    button.addTarget(self, action: "Action:", forControlEvents:UIControlEvents.TouchUpInside)
    menuView.addSubview(button)
    

    Let me know whether if it works or not?

    0 讨论(0)
  • 2020-12-07 18:02

    Swift 5 version of accepted answer:

    let image = UIImage(named: "image_name")
    let button = UIButton(type: UIButton.ButtonType.custom)
    button.frame = CGRect(x: 100, y: 100, width: 200, height: 100)
    button.setImage(image, for: .normal)
    button.addTarget(self, action: #selector(function), for: .touchUpInside)
    
    //button.backgroundColor = .lightGray
    self.view.addSubview(button)
    

    where of course

    @objc func function() {...}
    

    The image is aligned to center by default. You can change this by setting button's imageEdgeInsets, like this:

    // In this case image is 40 wide and aligned to the left
    button.imageEdgeInsets = UIEdgeInsets(top: 5, left: 5, bottom: 5, right: button.frame.width - 45)
    
    0 讨论(0)
提交回复
热议问题