Mode konten UIButton ImageView tidak berfungsi

Saya baru saja memulai aplikasi untuk iOS di Swift, saya melakukan desain secara terprogram (maksud saya, saya tidak menggunakan storyboard)

Saya memiliki UIButton dengan gambar di dalamnya, saya ingin gambar tersebut memenuhi seluruh tombol. Saat ini hanya menampilkan gambar di tombol saya, tetapi lebih kecil dari tombol, berada di tengah atas bingkai tombol.

Kode saya adalah:

    let buttonLocation = UIButton(frame: CGRect(x: 0, y: 0, width: buttonRoundedSize, height: buttonRoundedSize))
    buttonLocation.setImage(UIImage(named: "locate_button"), for: .normal)
    buttonLocation.backgroundColor = .white
    buttonLocation.layer.cornerRadius = frame.width / 2
    buttonLocation.myExtension()

Berikut adalah hal-hal yang saya coba (tidak ada yang berhasil):

    self.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    self.autoresizingMask = .flexibleWidth
    self.autoresizingMask = .flexibleHeight
    self.imageView?.contentMode = .scaleAspectFill

Jika saya hanya meletakkan baris contentMode juga tidak berfungsi. ImageView tidak kembali, nihil saya sudah memeriksanya..

Terima kasih!


person Quentin Rth    schedule 24.05.2019    source sumber
comment
coba buttonLocation.contentMode = .scaleAspectFit   -  person Ben Rockey    schedule 24.05.2019
comment
gunakan buttonLocation.setBackgroundImage(UIImage(named: "locate_button"), for: .normal)   -  person Rocky    schedule 24.05.2019
comment
@BenRockey tidak berhasil   -  person Quentin Rth    schedule 24.05.2019
comment
Coba atur mode konten objek imageView di dalam tombol. Mantan. buttonLocation.imageView?.contentMode = .scaleAspectFill   -  person BhargavR    schedule 24.05.2019
comment
@BhargavR juga tidak berfungsi :( Dan saya juga sudah mencoba setBackgroundImage dan saya memiliki masalah yang sama persis   -  person Quentin Rth    schedule 24.05.2019


Jawaban (4)


Tetapkan contentMode dari buttonLocation's imageView sebagai scaleAspectFill atau scaleToFill untuk mencakup seluruh frame dari button.

let buttonLocation = UIButton(frame: CGRect(x: 0, y: 0, width: 200, height: 500))
buttonLocation.setImage(UIImage(named: "image"), for: .normal)
buttonLocation.backgroundColor = .gray
buttonLocation.layer.cornerRadius = buttonLocation.frame.width / 2
buttonLocation.imageView?.contentMode = .scaleAspectFill //Here........

Contoh:

masukkan deskripsi gambar di sini

person PGDev    schedule 24.05.2019
comment
Itulah tepatnya yang saya lakukan seperti yang Anda lihat di postingan pertama saya, dan itu tidak berhasil - person Quentin Rth; 24.05.2019

Anda perlu menggunakan properti setBackgroundImage alih-alih setImage.

buttonLocation.setBackgroundImage(UIImage(named: "locate_button"), for: .normal)
person Samir Shaikh    schedule 24.05.2019
comment
Masalah yang sama dengan setBackgroundImage, bukan setImage - person Quentin Rth; 24.05.2019

Mungkin ini bisa membantu Anda:

let buttonLocation = UIButton(type: .custom)
buttonLocation.frame = CGRect(x: 0, y: 0, width: buttonRoundedSize, height: buttonRoundedSize)
buttonLocation.setImage(UIImage(named: "locate_button"), for: .normal)
buttonLocation.imageView?.contentMode = .scaleAspectFill
buttonLocation.contentHorizontalAlignment = .fill
buttonLocation.contentVerticalAlignment = .fill
buttonLocation.backgroundColor = .white
buttonLocation.layer.cornerRadius = frame.width / 2
buttonLocation.clipsToBounds = true

Anda perlu menambahkan properti contentHorizontalAlignment dan contentVerticalAlignment dan jangan lupa setel clipsToBounds ke true untuk melihat efek sudut raius.

person riza milani    schedule 24.05.2019
comment
Masalah yang sama bahkan dengan semua itu - person Quentin Rth; 24.05.2019
comment
Apa yang Anda sebut di dalam myExtension(). Coba hapus imageEdgeInsets dan uji lagi. - person riza milani; 24.05.2019

Coba gunakan kode di bawah ini dan hapus properti lain yang disetel untuk tombol ini:

let buttonLocation = UIButton(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
        buttonLocation.setImage(UIImage(named: "cat"), for: .normal)
        buttonLocation.backgroundColor = .white
        buttonLocation.layer.cornerRadius = 50
        buttonLocation.imageView?.contentMode = .scaleAspectFill
        buttonLocation.clipsToBounds = true

        self.view.addSubview(buttonLocation)

Di sini pastikan gambar yang Anda atur di tombol lebih besar dari bingkai tombol. Anda dapat mengubah nilai radius bingkai dan sudut pada kode di atas. Saya baru saja mencoba dengan kode di atas dan mendapatkan output di bawah ini.

masukkan deskripsi gambar di sini

Anda dapat berkomentar jika ini bukan hasil yang Anda harapkan.

Semoga ini membantu.

person BhargavR    schedule 24.05.2019
comment
Masih tidak berfungsi dan ukuran gambar saya lebih tinggi dari ukuran buka kancing jadi saya benar-benar tidak mengerti mengapa tidak berfungsi... - person Quentin Rth; 27.05.2019