Saya memiliki banyak gambar yang saya gunakan untuk tampilan gambar sel, semuanya tidak lebih besar dari 50x50. mis. 40x50, 50x32, 20x37 .....
Saat saya memuat tampilan tabel, teks tidak sejajar karena lebar gambar bervariasi. Saya juga ingin gambar kecil muncul di tengah, bukan di kiri.
Berikut adalah kode yang saya coba di dalam metode 'cellForRowAtIndexPath' saya
cell.imageView.autoresizingMask = ( UIViewAutoresizingNone );
cell.imageView.autoresizesSubviews = NO;
cell.imageView.contentMode = UIViewContentModeCenter;
cell.imageView.bounds = CGRectMake(0, 0, 50, 50);
cell.imageView.frame = CGRectMake(0, 0, 50, 50);
cell.imageView.image = [UIImage imageWithData: imageData];
Seperti yang Anda lihat, saya telah mencoba beberapa hal, tetapi tidak ada yang berhasil.
self.imageView.bounds
gambar akan menjadi tengah.UITableViewCell
?Bagi Anda yang belum memiliki subclass
UITableViewCell
:Kode di atas menyetel ukurannya menjadi 40x40.
Cepat 2
Atau Anda dapat menggunakan pendekatan lain (belum diuji) yang disarankan oleh @Tommy:
Cepat 3+
Kode di atas adalah versi Swift 3+ yang di atas.
sumber
UIScreen.mainScreen.scale
jadi saya pergi sajaUIGraphicsBeginImageContext
. Juga mengubah ukuran imageView di sel dasar.Begini cara saya melakukannya. Teknik ini menangani pemindahan teks dan label teks detail secara tepat ke kiri:
sumber
tampilan gambar ditambahkan sebagai sub tampilan ke sel tampilan tabel
sumber
Seluruh sel tidak perlu dibuat ulang. Anda bisa menggunakan properti indentationLevel dan indentationWidth tableViewCells untuk menggeser konten sel Anda. Kemudian Anda menambahkan imageView kustom Anda ke sisi kiri sel.
sumber
Lebih baik buat tampilan gambar dan tambahkan sebagai tampilan sub ke sel. Kemudian Anda bisa mendapatkan ukuran bingkai yang diinginkan.
sumber
A Simply Swift ,
Langkah 1: Buat Satu SubKelas dari
UITableViewCell
Langkah 2: Tambahkan metode ini ke SubKelas UITableViewCell
Langkah 3: Buat objek sel menggunakan SubClass in
cellForRowAtIndexPath
,Langkah 4: Nikmati
sumber
sumber
Ini bekerja untuk saya dengan cepat:
Buat subclass UITableViewCell (pastikan Anda menghubungkan sel Anda di storyboard)
Di cellForRowAtIndexPath, dequeue sel sebagai tipe sel baru Anda:
Jelas ubah nilai angka agar sesuai dengan tata letak Anda
sumber
Saya telah membuat ekstensi menggunakan jawaban @GermanAttanasio. Ini menyediakan metode untuk mengubah ukuran gambar ke ukuran yang diinginkan, dan metode lain untuk melakukan hal yang sama sambil menambahkan margin transparan ke gambar (ini dapat berguna untuk tampilan tabel di mana Anda ingin gambar memiliki margin juga).
sumber
Berikut adalah metode kerja @germanattanasio, yang ditulis untuk Swift 3
sumber
Jika Anda menggunakan,
cell.imageView?.translatesAutoresizingMaskIntoConstraints = false
Anda dapat mengatur batasan pada imageView. Inilah contoh kerja yang saya gunakan dalam sebuah proyek. Saya menghindari subclass dan tidak perlu membuat storyboard dengan sel prototipe tetapi membutuhkan waktu yang cukup lama untuk menjalankannya, jadi mungkin paling baik hanya digunakan jika tidak ada cara yang lebih sederhana atau lebih ringkas yang tersedia untuk Anda.sumber
UITableViewCell biasa bekerja dengan baik untuk memposisikan sesuatu tetapi cell.imageView tampaknya tidak berperilaku seperti yang Anda inginkan. Saya menemukan bahwa itu cukup sederhana untuk membuat UITableViewCell ditata dengan benar dengan terlebih dahulu memberikan cell.imageView gambar berukuran tepat seperti
Kemudian Anda bisa menghubungkan UIImageView Anda sendiri yang berfungsi dengan baik
Setel gambar pada anImageView dan itu akan melakukan apa yang Anda harapkan dari UIImageView. Jadilah ukuran yang Anda inginkan terlepas dari gambar yang Anda berikan. Ini harus masuk ke tableView: cellForRowAtIndexPath:
sumber
Solusi ini pada dasarnya menggambar gambar sebagai 'aspek fit' dalam persegi yang diberikan.
sumber
Saya memiliki masalah yang sama. Terima kasih kepada semua orang yang menjawab - Saya bisa mendapatkan solusi bersama menggunakan bagian dari beberapa jawaban ini.
Solusi saya menggunakan swift 5
Masalah yang kami coba selesaikan adalah kami mungkin memiliki gambar dengan rasio aspek yang berbeda di kami
TableViewCell
, tetapi kami ingin gambar tersebut dirender dengan lebar yang konsisten. Gambar harus, tentu saja, dirender tanpa distorsi dan memenuhi seluruh ruang. Dalam kasus saya, saya baik-baik saja dengan beberapa "pemotongan" dari gambar tinggi dan kurus, jadi saya menggunakan mode konten.scaleAspectFill
Untuk melakukan ini, saya membuat subkelas khusus dari
UITableViewCell
. Dalam kasus saya, saya menamakannyaStoryTableViewCell
. Seluruh kelas ditempel di bawah, dengan komentar sebaris.Pendekatan ini berhasil untuk saya saat juga menggunakan Tampilan Aksesori kustom dan label teks panjang. Berikut gambar hasil akhirnya:
Tampilan Tabel Rendered dengan lebar gambar yang konsisten
sumber
Solusi yang kami dapatkan serupa dengan banyak solusi lainnya. Tetapi untuk mendapatkan posisi pemisah yang benar, kami harus mengaturnya sebelum menelepon
super.layoutSubviews()
. Contoh yang disederhanakan:sumber