Saya mencoba menerapkan gradien sebagai warna latar belakang View (tampilan utama storyboard). Kode berjalan, tetapi tidak ada yang berubah. Saya menggunakan xCode Beta 2 dan Swift.
Berikut kodenya:
class Colors {
let colorTop = UIColor(red: 192.0/255.0, green: 38.0/255.0, blue: 42.0/255.0, alpha: 1.0)
let colorBottom = UIColor(red: 35.0/255.0, green: 2.0/255.0, blue: 2.0/255.0, alpha: 1.0)
let gl: CAGradientLayer
init() {
gl = CAGradientLayer()
gl.colors = [ colorTop, colorBottom]
gl.locations = [ 0.0, 1.0]
}
}
kemudian di view controller:
let colors = Colors()
func refresh() {
view.backgroundColor = UIColor.clearColor()
var backgroundLayer = colors.gl
backgroundLayer.frame = view.frame
view.layer.insertSublayer(backgroundLayer, atIndex: 0)
}
}
}
ios
ios7
swift
cagradientlayer
justingordon
sumber
sumber
Jawaban:
Warna yang Anda berikan untuk gradien harus bertipe
CGColor
. Jadi atur array AndaCGColor
kegl.colors
.Kode yang benar adalah:
sumber
fatal error: array element cannot be bridged to Objective-C
, saat menetapkan ke.colors
properti. Apa yang salah dengan ini?[AnyObject]
dan kemudian tetapkan ke.colors
properti.let c: [AnyObject] = [colorTop, colorBottom]
Xcode 11 • Swift 5.1
Anda dapat merancang Tampilan Gradient Anda sendiri sebagai berikut:
sumber
Dan jika Anda perlu mengubah arah gradien Anda harus menggunakan startPoint dan endPoint.
sumber
Hanya Memodifikasi jawaban yang disebutkan di atas.
Kemudian panggil metode ini di dalam
viewWillAppear
sumber
self.view.layer.addSublayer(gradientLayer)
denganself.view.layer.insertSublayer(gradientLayer, at: 0)
, ini akan menempatkan layer "di bawah" semua yang lainDi Swift3 coba ini:
sumber
Saya membuat ekstensi UIView untuk menerapkan gradien dasar ke tampilan apa pun
sumber
CGPointMake(0.0,0.0)
dapat diganti denganCGPointZero
untuk singkatnyaSaya memiliki ekstensi ini:
Pemakaian:
sumber
self.layer.addSublayer(layer)
keself.layer.insertSublayer(layer, at: 0)
tampaknya mencegah gradien dari mengaburkan segala sesuatu di pembangun antarmuka (setidaknya dalam satu tes saya)Coba ini, Ini bekerja untuk saya,
Anda dapat menambahkan titik awal dan akhir warna gradien.
Untuk keterangan lebih rinci, rujuk Jawaban Terbaik atau Anda dapat mengikuti CAGradientLayer From Apple
Semoga ini bisa membantu seseorang.
sumber
startPoint
danendPoint
untuk kiri ke kanan:gradient.startPoint = CGPoint(x: 0.0, y: 0.5) gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
dan untuk atas ke bawah:gradient.startPoint = CGPoint(x: 0.5, y: 0.0) gradient.endPoint = CGPoint(x: 0.5, y: 1.0)
Mudah
Gunakan seperti ini: -
sumber
Perpanjang
UIView
dengan kelas khusus ini.GradientView.swift
Pemakaian
gradientView.colors = [UIColor.blackColor().colorWithAlphaComponent(0.8), UIColor.clearColor()]
Hasil
sumber
super.drawRect()
?super.drawRect()
menambahkan.@IBInspectable var topColor: UIColor = UIColor.lightGrayColor()
@IBInspectable var bottomColor: UIColor = UIColor.blueColor()
Kemudian Anda dapat melihat di pengaturan Editor AtributKode ini akan bekerja dengan Swift 3.0
sumber
Cepat 4
Tambahkan outlet tampilan
@IBOutlet weak var gradientView: UIView!
Tambahkan gradien ke tampilan
sumber
jika Anda ingin menggunakan HEX daripada RGBA, cukup seret .swift baru yang kosong dan tambahkan kode yang disebutkan di bawah ini:
demikian pula, seret file .swift kosong lainnya dan tambahkan kode yang disebutkan di bawah ini:
setelah itu di view controller, di bawah kelas instantiate kelas 'Warna' Anda seperti ini:
tambahkan fungsi baru:
nyatakan fungsi itu di viewDidLoad:
Anda selesai :)) menggunakan HEX terlalu mudah jika dibandingkan dengan RGBA. : D
sumber
Swift 3 - Hanya menggunakan tekstur dan SKSpriteNode, tidak memerlukan UIView
Pemakaian:
sumber
Gunakan kode di bawah ini:
panggil fungsi ini seperti:
sumber
Cukup Tentukan Bingkai Tampilan, di mana Anda ingin menunjukkan warna gradien.
sumber
Berikut adalah variasi untuk pengaturan ini dalam file kelas Util yang dapat digunakan kembali
Dalam proyek Xcode Anda:
Buat kelas Swift baru, sebut saja UI_Util.swift, dan isi sebagai berikut:
Sekarang Anda dapat memanggil fungsi dari ViewController seperti:
Terima kasih atas jawaban katwal-Dipak untuk kode fungsinya
sumber
Agar cepat menerapkan CAGradientLayer ke objek apa pun (Horisontal dan vertikal)
Cara Penggunaan
Anda dapat memeriksa output di sini
sumber
Saya ingin menambahkan gradien ke tampilan, dan kemudian jangkar menggunakan auto-layout.
sumber
Untuk menambahkan gradien ke dalam lapisan, tambahkan:
sumber
Berikut ini adalah ekstensi cepat di mana Anda dapat memberikan warna arbitrer dalam jumlah berapa pun. Ini akan menghapus setiap gradien sebelumnya sebelum memasukkan satu dan itu akan mengembalikan lapisan gradien yang baru dimasukkan untuk manipulasi lebih lanjut jika diperlukan:
sumber
Kode bersih yang memungkinkan Anda meneruskan apa pun
UIColor
ke instanceGradientLayer
kelas:sumber
Ekstensi mudah digunakan saat cepat 3
gunakan untuk tampilan Anda, misalnya
sumber
Jika Anda memiliki koleksi Collection (Multiple View) lakukan ini
sumber
Ada perpustakaan bernama Chameleon ( https://github.com/viccalexander/Chameleon ) yang dapat digunakan untuk warna gradien. Bahkan memiliki gaya gradien untuk diimplementasikan. Ini adalah bagaimana Anda dapat menambahkannya di swift 4 podfile pod 'ChameleonFramework / Swift',: git => ' https://github.com/ViccAlexander/Chameleon.git ',: branch => 'wip / swift4'
sumber
Bagi mereka yang menginginkan versi Objective C dari jawabannya. Diuji dan berfungsi di iOS13
sumber
Satu hal yang saya perhatikan adalah Anda tidak dapat menambahkan gradien ke UILabel tanpa menghapus teks. Salah satu solusi sederhana adalah dengan menggunakan UIButton dan menonaktifkan interaksi pengguna.
sumber
SwiftUI: Anda dapat menggunakan
LinearGradient
struct sebagai elemen pertama dalam aZStack
. Sebagai "bagian bawah"ZStack
, itu akan berfungsi sebagai warna latar belakang.AngularGradient
danRadialGradient
juga tersedia.sumber
Aku dicampur Rohit Sisodia dan MGM jawaban
Untuk Menggunakan tulis: -
Keluaran:
sumber