Próbuję zastosować gradient jako kolor tła Widoku (główny widok scenorysu). Kod działa, ale nic się nie zmienia. Używam xCode Beta 2 i Swift.
Oto kod:
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]
}
}
następnie w kontrolerze widoku:
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
źródło
źródło
Odpowiedzi:
Kolory, które udostępniasz gradientowi, muszą być typu
CGColor
. Więc ustaw tablicęCGColor
nagl.colors
.Prawidłowy kod to:
źródło
fatal error: array element cannot be bridged to Objective-C
podczas przypisywania do.colors
właściwości. Co może być z tym nie tak?[AnyObject]
a następnie przypisać ją do.colors
właściwości.let c: [AnyObject] = [colorTop, colorBottom]
Xcode 11 • Swift 5.1
Możesz zaprojektować własny widok gradientu w następujący sposób:
źródło
A jeśli chcesz zmienić kierunek gradientu, musisz użyć startPoint i endPoint.
źródło
Wystarczy zmodyfikować powyższą odpowiedź.
Następnie wywołaj tę metodę w ciągu
viewWillAppear
źródło
self.view.layer.addSublayer(gradientLayer)
zself.view.layer.insertSublayer(gradientLayer, at: 0)
tego będzie umieścić warstwę „poniżej” wszystkich innychW Swift3 spróbuj tego:
źródło
Zrobiłem rozszerzenie UIView, aby zastosować podstawowy gradient do dowolnego widoku
źródło
CGPointMake(0.0,0.0)
można go zastąpićCGPointZero
zwięzłościąMam te rozszerzenia:
Stosowanie:
źródło
self.layer.addSublayer(layer)
celuself.layer.insertSublayer(layer, at: 0)
wydaje się zapobiegać gradient od kasował wszystko w konstruktora interfejsu (przynajmniej w moim jednym teście)Spróbuj tego, działa dla mnie,
Możesz dodać punkt początkowy i końcowy koloru gradientu.
Aby uzyskać bardziej szczegółowy opis, patrz Najlepsza odpowiedź lub możesz śledzić CAGradientLayer od Apple
Mam nadzieję, że jest to pomoc dla kogoś.
źródło
startPoint
iendPoint
dla gradientu od lewej do prawej:gradient.startPoint = CGPoint(x: 0.0, y: 0.5) gradient.endPoint = CGPoint(x: 1.0, y: 0.5)
i dla góry do dołu:gradient.startPoint = CGPoint(x: 0.5, y: 0.0) gradient.endPoint = CGPoint(x: 0.5, y: 1.0)
To jest łatwe
Użyj w ten sposób: -
źródło
Rozszerz
UIView
dzięki tej niestandardowej klasie.GradientView.swift
Stosowanie
gradientView.colors = [UIColor.blackColor().colorWithAlphaComponent(0.8), UIColor.clearColor()]
Wynik
źródło
super.drawRect()
?super.drawRect()
dodanym.@IBInspectable var topColor: UIColor = UIColor.lightGrayColor()
@IBInspectable var bottomColor: UIColor = UIColor.blueColor()
Następnie możesz zobaczyć w ustawieniach Edytor atrybutówTen kod będzie działał z Swift 3.0
źródło
Szybki 4
Dodaj ujście widokowe
@IBOutlet weak var gradientView: UIView!
Dodaj gradient do widoku
źródło
jeśli chcesz użyć HEX zamiast RGBA, po prostu przeciągnij nowy pusty .swift i dodaj poniższy kod:
podobnie przeciągnij kolejny pusty plik .swift i dodaj poniższy kod:
potem w widoku kontrolera, w ramach klasy utwórz instancję swojej klasy „Kolor” w następujący sposób:
dodaj nową funkcję:
określ tę funkcję w viewDidLoad:
gotowe :)) Używanie HEX jest zbyt łatwe w porównaniu do RGBA. :RE
źródło
Swift 3 - używa tylko tekstur i SKSpriteNode, nie wymaga UIView
Stosowanie:
źródło
Użyj poniższego kodu:
wywołaj tę funkcję jak:
źródło
Po prostu określ ramkę widoku, w której chcesz pokazać kolor gradientu.
źródło
Oto wariant konfiguracji tego w pliku klasy Util wielokrotnego użytku
W twoim projekcie Xcode:
Utwórz nową klasę Swift, nazwij ją UI_Util.swift i wypełnij ją w następujący sposób:
Teraz możesz wywołać tę funkcję z dowolnego ViewController w taki sposób:
Dzięki odpowiedzi katwal-Dipak na kod funkcji
źródło
Aby szybko zastosować CAGradientLayer do dowolnego obiektu (poziomego i pionowego)
Jak używać
Tutaj możesz sprawdzić dane wyjściowe
źródło
Chciałem dodać gradient do widoku, a następnie zakotwiczyć go za pomocą automatycznego układu.
źródło
Aby dodać gradient do warstwy, dodaj:
źródło
Oto szybkie rozszerzenie, w którym możesz przekazać dowolną liczbę dowolnych kolorów. Usunie wszystkie wcześniejsze gradienty przed wstawieniem jednego i zwróci nowo wstawioną warstwę gradientu do dalszej manipulacji w razie potrzeby:
źródło
Kod czyszczenia, który pozwala przekazać dowolne
UIColor
wystąpienieGradientLayer
klasy:źródło
Łatwe w użyciu rozszerzenie w swift 3
użyj do swojego widoku, przykład
źródło
Jeśli masz widok Kolekcja (widok wielokrotny), zrób to
źródło
Istnieje biblioteka o nazwie Chameleon ( https://github.com/viccalexander/Chameleon ), której można używać do kolorów gradientu. Ma nawet style gradientu do zaimplementowania. Oto jak możesz go dodać w swift 4 podfile pod 'ChameleonFramework / Swift',: git => ' https://github.com/ViccAlexander/Chameleon.git ',: branch => 'wip / swift4'
źródło
Dla tych, którzy chcą otrzymać wersję celu C odpowiedzi. Testowany i działa na iOS13
źródło
Zauważyłem tylko, że nie można dodać gradientu do UILabel bez wyczyszczenia tekstu. Jednym prostym obejściem jest użycie przycisku UIB i wyłączenie interakcji użytkownika.
źródło
SwiftUI: Możesz użyć
LinearGradient
struct jako pierwszego elementu wZStack
. Jako „spód”ZStack
będzie służył jako kolor tła.AngularGradient
iRadialGradient
są również dostępne.źródło
I miesza się z Rohit Sisodia i MGM odpowiedzi
Aby użyć zapisu: -
Wynik:
źródło