2014-12-26 21 views
8
var button = UIButton.buttonWithType(UIButtonType.Custom) as UIButton 
var image = UIImage(named: "myimage.png") as UIImage! 
button.frame = CGRectMake(0, 0, 100, 100) 
button.setImage(image, forState: .Normal) 

Mam obraz, który ustawiłem na moim przycisku, ale chcę go skalować, aby był mniejszy niż przycisk (na przykład obraz powinien być 50,50) i wyśrodkować w przycisku. Jak mogę to zrobić w Swift?Jak skalować obraz i wyśrodkować go na Uibuttonie w Swift?

Odpowiedz

17

Xcode 8.3.1 • Swift 3,1

let customButton = UIButton(type: .custom) 
let image = UIImage(named: "myimage.png") 

func buttonTouchDown(_ button: UIButton) { 
    print("button Touch Down") 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    button.frame = CGRect(x: 0, y: 0 , width: 100, height: 100) 
    button.backgroundColor = .clear 
    button.addTarget(self, action: #selector(buttonTouchDown), for: .touchDown) 
    button.setTitle("Title", for: .normal) 
    button.setTitleColor(.black, for: .normal) 
    button.setImage(image, for: .normal) 
    button.imageEdgeInsets = UIEdgeInsetsMake(25,25,25,25) 
    view.addSubview(button) 
} 
6

lub przez XIB po wybraniu UIButton.

Tylko upewnij się, że twoje wypustki są takie same.


enter image description here

5

Ther jest znacznie łatwiejszy sposób to, gdzie nie mamy do czynienia z wypustkami treści robić. Oto jego brzmi:

var button = UIButton.buttonWithType(UIButtonType.Custom) as UIButton 
var image = UIImage(named: "myimage.png") as UIImage! 
button.frame = CGRectMake(0, 0, 100, 100) 
button.setImage(image, forState: .Normal) 
button.contentMode = .center 
button.imageView?.contentMode = .scaleAspectFit 
0

Jeśli masz na to pytanie, a przycisk jest wewnątrz stackView

Wybierz przycisk i dodać ograniczenia: Aspect Ratio

Należy (w zależności od konfiguracji stackView) zachowaj aspekt.

Mam nadzieję, że to pomaga.

1

Swift 4 Swift 3

var image = UIImage(named: "myimage.png") as UIImage! 
btnetc.setImage(image, for: .normal) 
btnetc.imageView?.contentMode = .scaleAspectFill 

lub

btnetc.imageView?.contentMode = .scaleAspectFit 

lub

btnetc.imageView?.contentMode = .scaleToFill 
Powiązane problemy