Saya memiliki tampilan gambar, dideklarasikan secara terprogram, dan saya mengatur gambarnya, juga secara terprogram.
Namun, saya menemukan diri saya tidak dapat mengatur gambar agar sesuai dengan aspek dan menyelaraskan pusat ke tampilan gambar.
Dengan kata lain, saya ingin gambar:
- Turunkan agar sesuai dengan aspek, jika gambar besar.
- Tengahkan tetapi jangan perbesar, jika gambarnya kecil.
Bagaimana saya mendapatkannya?
ios
objective-c
uiimageview
uiimage
Ravi Vooda
sumber
sumber
Jawaban:
Hanya menempelkan solusinya:
Seperti yang dikatakan @manohar
memecahkan masalah saya
sumber
CGRectContainsRect(imageView.bounds, {CGPointZero, image.size})
CGSize imageSize = ((UIImage*)imagesArray[i]).size;
,CGSize viewSize = imageView.bounds.size
,if (viewSize.width > imageSize.width && viewSize.height > imageSize.height) {
.Dalam bahasa cepat kita dapat mengatur mode konten tampilan UIImage seperti berikut ini:
sumber
Cepat
Anda dapat menggunakan opsi berikut untuk memposisikan gambar Anda:
scaleToFill
scaleAspectFit
// konten diskalakan agar sesuai dengan aspek tetap. sisanya transparanredraw
// gambar ulang perubahan batas (panggilan -setNeedsDisplay)center
// isi tetap ukuran yang sama. posisi disesuaikan.top
bottom
left
right
topLeft
topRight
bottomLeft
bottomRight
sumber
Jawaban yang diperbarui
Ketika saya awalnya menjawab pertanyaan ini pada tahun 2014, tidak ada persyaratan untuk tidak memperbesar gambar dalam kasus gambar kecil. (Pertanyaannya diedit pada tahun 2015. ) Jika Anda memiliki persyaratan seperti itu, Anda memang perlu membandingkan ukuran gambar dengan ukuran gambarView dan menggunakan salah satu
UIViewContentModeCenter
(dalam hal gambar lebih kecil dari imageView) atauUIViewContentModeScaleAspectFit
dalam semua kasus lainnya .Jawaban asli
Mengatur contentMode pada imageView
UIViewContentModeScaleAspectFit
sudah cukup bagi saya. Tampaknya pusat gambar juga. Saya tidak yakin mengapa orang lain menggunakan logika berdasarkan gambar. Lihat juga pertanyaan ini: fit dan center aspek iOSsumber
Saya memecahkan masalah ini seperti ini.
UIImageView
(denganUIViewContentModeScaleAspectFit
)(CGSize imageSize = imageView.image.size)
UIImageView
mengubah ukuran.[imageView sizeThatFits:imageSize]
Saya ingin menempatkan UIView di tengah atas
UICollectionViewCell
. jadi, saya menggunakan fungsi ini.Ini bekerja untuk saya.
sumber
Subkelas ini menggunakan pusat jika gambar tidak lebih besar dari tampilan, jika tidak turun skala. Saya menemukan ini berguna untuk
UIImageView
yang mengubah ukuran.Gambar yang ditampilkan lebih kecil dari tampilan untuk ukuran besar, tetapi lebih besar dari tampilan untuk ukuran kecil. Saya hanya ingin mengurangi, tetapi tidak naik.
sumber
Anda dapat mencapai ini dengan mengatur mode konten tampilan gambar ke UIViewContentModeScaleAspectFill.
Kemudian gunakan metode metode berikut untuk mendapatkan objek uiimage yang diubah ukurannya.
Diedit Di Sini (Versi Swift)
sumber
sumber
sumber
Untuk orang yang mencari ukuran UIImage,
sumber