Bagaimana saya bisa menyesuaikan ukuran gambar UIButton? Saya mengatur gambar seperti ini:
[myLikesButton setImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];
Namun ini mengisi gambar ke tombol penuh, bagaimana cara membuat gambar lebih kecil?
ios
objective-c
xcode
uibutton
adit
sumber
sumber
Jawaban:
Jika saya mengerti benar apa yang Anda coba lakukan, Anda perlu bermain dengan inset tepi gambar tombol. Sesuatu seperti:
sumber
Jawaban Tim sudah benar, namun saya ingin menambahkan saran lain, karena dalam kasus saya ada solusi yang lebih sederhana.
Saya mencari untuk mengatur
UIButton
insets gambar karena saya tidak menyadari bahwa saya dapat mengatur mode konten pada tombolUIImageView
, yang akan mencegah perlunya menggunakan UIEdgeInsets dan nilai-nilai hard-coded secara bersamaan. Cukup akses tampilan gambar di bawah tombol dan atur mode konten:Lihat UIButton tidak mendengarkan pengaturan mode konten?
Cepat 3
sumber
button.backgroundImageView.contentMode
tidak berfungsiSwift 3:
sumber
contentVerticalAlignment/contentHorizontalAlignment
opsi - opsi yang ada memungkinkan saya untuk mengukurnya sesuai dengan yang saya harapkan. Terima kasih telah memposting ini.contentHorizontalAlignment
dancontentVerticalAlignment
melakukan trikAnda juga dapat melakukannya dari pembangun inteface seperti ini.
Saya pikir ini membantu.
sumber
Jika gambar Anda terlalu besar (dan Anda tidak bisa / tidak ingin hanya membuat gambar lebih kecil), kombinasi dari dua jawaban pertama berfungsi dengan baik.
Kecuali jika Anda mendapatkan inset gambar dengan benar, gambar akan miring tanpa mengubah
contentMode
.sumber
Anda dapat menggunakan
imageEdgeInsets
properti margin inset atau outset untuk persegi panjang di sekitar gambar tombol.Nilai positif menyusut, atau insets, ujung itu — bergerak. Nilai negatif memperluas, atau mengimbangi, tepi itu.
sumber
Berikut ini solusi lain untuk skala imageView dari UIButton.
sumber
Inilah versi Swift:
sumber
Cepat 4
Anda perlu menggunakan dua baris kode ini, dalam urutan khusus ini. Yang Anda butuhkan hanyalah mengubah nilai atas dan bawah dari insets tepi.
sumber
EXC_BAD_ACCESS
kesalahan saat dipanggil darioverride func layoutSubviews()
.Dengan bantuan jawaban Tim C , saya dapat membuat ekstensi
UIButton
menggunakan Swift yang memungkinkan Anda menentukan bingkai gambar dengan menggunakan.setImage()
fungsi denganframe
parameter tambahanMenggunakan ini, jika Anda ingin mengatur bingkai a
UIButton
untukCGRectMake(0, 0, 64, 64)
, dan mengatur gambar itumyImage
dengan bingkaiCGRectMake(8, 8, 48, 48)
, Anda bisa menggunakansumber
if let
bukannya memeriksa apakahframe
sudahnil
dan kemudian memaksa membuka bungkus miliaran kali .Saat mengubah ukuran ikon dengan
UIEdgeInsetsMake(top, left, bottom, right)
, perlu diingat dimensi tombol dan kemampuan UIEdgeInsetsMake untuk bekerja dengan nilai negatif seolah-olah mereka positif.Contoh: Dua tombol dengan tinggi 100 dan aspek 1: 1.
Contoh 1 dan 3 identik sejak ABS (100 - (40 + 40)) = ABS (100 - (60 + 60))
sumber
Cepat 3
Saya mengatur lebar dan tinggi myButton ke 40 dan bantalan saya dari EdgeInsetsMake adalah 15 semua sisi. Saya sarankan untuk menambahkan warna latar belakang ke tombol Anda untuk melihat padding yang sebenarnya.
sumber
Salah satu pendekatan adalah mengubah ukuran UIImage dalam kode seperti berikut. Catatan: kode ini hanya berskala berdasarkan tinggi, tetapi Anda dapat dengan mudah menyesuaikan fungsi dengan skala berdasarkan lebar juga.
sumber
Diperbarui untuk Swift> 5
atur ukuran:
atur margin:
sumber
Diperbarui untuk Swift 3
sumber
saya pikir, ukuran gambar Anda juga sama dengan ukuran tombol maka Anda menempatkan gambar di latar belakang tombol seperti:
Anda mast memiliki ukuran gambar dan tombol yang sama. Saya harap Anda mengerti maksud saya.
sumber