Saya mencoba mengubah UIStackView
latar belakang dari jelas menjadi putih di inspektur Storyboard, tetapi ketika mensimulasikan, warna latar belakang tampilan tumpukan masih memiliki warna yang jelas.
Bagaimana saya bisa mengubah warna latar belakang UIStackView
?
ios
swift
uistackview
LukasTong
sumber
sumber
Jawaban:
Referensi dari SINI .
EDIT:
Anda dapat menambahkan subView
UIStackView
seperti yang disebutkan di SINI atau dalam jawaban ini (di bawah) dan memberi warna padanya. Lihat di bawahextension
untuk itu:Dan Anda bisa menggunakannya seperti:
sumber
drawRect()
ini disebut. Anda cukup menguji dengan subclassingUIStackView
if let backgroundView = self.subviews.first(where: {$0.tag == 123}) {
. Jika demikian, saya mengubah warna latar belakang tampilan itu.Saya melakukannya seperti ini:
Bekerja seperti pesona
sumber
@IBDesignable class StackView
Yang akan memungkinkan Anda untuk mendesain di papan Cerita. Saya tidak terlalu peduli untuk menambahkan latar belakang saat run time, tetapi sangat sulit untuk merancang stackview ketika tidak memiliki warna pada story boardUIStackView
adalah elemen non-rendering, dan dengan demikian, itu tidak bisa tergambar di layar. Ini berarti bahwa perubahanbackgroundColor
pada dasarnya tidak melakukan apa pun. Jika Anda ingin mengubah warna latar belakang, tambahkanUIView
saja sebagai subview (yang tidak diatur) seperti di bawah ini:sumber
Mungkin cara termudah, lebih mudah dibaca dan lebih sedikit hacky adalah dengan menanamkan
UIStackView
ke dalamUIView
dan mengatur warna latar belakang ke tampilan.Dan jangan lupa untuk mengkonfigurasi dengan benar batasan Tata Letak Otomatis antara dua tampilan tersebut ... ;-)
sumber
Pitiphong benar, untuk mendapatkan stackview dengan warna latar belakang lakukan sesuatu seperti yang berikut ...
Ini akan memberi Anda stackview yang isinya akan ditempatkan di latar belakang merah.
Untuk menambahkan padding ke stackview sehingga konten tidak rata dengan tepi, tambahkan kode berikut atau di storyboard ...
sumber
TL; DR: Cara resmi untuk melakukan ini adalah dengan menambahkan tampilan kosong ke tampilan tumpukan menggunakan
addSubview:
metode dan mengatur latar belakang tampilan yang ditambahkan sebagai gantinya.Penjelasan: UIStackView adalah subkelas UIView khusus yang hanya melakukan tata letak yang tidak menggambar. Begitu banyak propertinya yang tidak berfungsi seperti biasa. Dan karena UIStackView hanya akan menata subview yang diatur, ini berarti bahwa Anda dapat menambahkannya dengan UIView dengan
addSubview:
metode, mengatur batasan dan warna latar belakangnya. Ini adalah cara resmi untuk mencapai yang Anda inginkan dari sesi WWDCsumber
Ini berfungsi untuk saya di Swift 3 dan iOS 10:
sumber
Di iOS10, jawaban @ Arbitur memerlukan setNeedsLayout setelah warna ditetapkan. Inilah perubahan yang diperlukan:
sumber
backgroundColor
sebelum Anda menambahkannya kesuperview
bekerja pada ios10 dan ios9, namun, jika Anda memperbaruibackgroundColor
setelah nyalayoutSubviews()
fungsi dipanggil itu pembaruan hanya wouldnt yangbackgroundColor
daribackgroundLayer
berarti tidak ada update visual. Diperbaiki sekarang, terima kasih telah menunjukkannya.Berikut ini adalah ikhtisar singkat untuk menambahkan Warna Latar Belakang tampilan tumpukan.
Membuat tampilan latar belakang dengan sudut membulat
Untuk membuatnya tampak sebagai latar belakang, kita menambahkannya ke array subview tampilan root stack pada indeks 0. Yang menempatkannya di belakang tampilan yang diatur dari tampilan stack.
Tambahkan kendala untuk menyematkan backgroundView ke tepi tampilan tumpukan, dengan menggunakan ekstensi kecil di UIView.
telepon
pinBackground
dariviewDidLoad
Referensi dari: DI SINI
sumber
Anda dapat membuat ekstensi kecil
UIStackView
Pemakaian:
sumber
Xamarin, versi C #:
sumber
sumber
Subkelas UIStackView
Lalu di kelas Anda
sumber
Anda dapat memasukkan sublayer ke StackView, ini berfungsi untuk saya:
sumber
Saya sedikit skeptis dalam komponen UI Subkelas. Ini adalah bagaimana saya menggunakannya,
Dan ini adalah penggunaannya,
Catatan: Dengan pendekatan ini, jika Anda ingin mengatur batas, Anda harus mengatur
layoutMargins
di stackView sehingga perbatasan terlihat.sumber
Anda tidak dapat menambahkan latar belakang ke stackview. Tapi yang bisa Anda lakukan adalah menambahkan stackview dalam tampilan dan kemudian mengatur latar belakang tampilan ini akan menyelesaikan pekerjaan. * Ini tidak akan mengganggu aliran stackview. Semoga ini bisa membantu.
sumber
Kami dapat memiliki kelas khusus
StackView
seperti ini:Dan itu bisa digunakan seperti ini:
Ini sedikit lebih baik daripada menambahkan fungsi ekstensi
func addBackground(color: UIColor)
seperti yang disarankan oleh orang lain. Tampilan latar malas sehingga tidak akan dibuat sampai Anda benar-benar meneleponstackView.backgroundView.backgroundColor = ...
. Dan pengaturan / perubahan warna latar belakang beberapa kali tidak akan menghasilkan beberapa subview yang dimasukkan dalam tampilan stack.sumber
Jika Anda ingin mengontrol dari perancang itu sendiri, tambahkan ekstensi ini ke tampilan tumpukan
sumber
Anda bisa melakukannya seperti ini:
Dengan memberikan ekstensi untuk mengganti
backgroundColor
:sumber
Coba BoxView . Ini mirip dengan UIStackView, tetapi ini merender dan mendukung lebih banyak opsi tata letak.
sumber