Xcode
Aangepaste besturingselementen maken in Interface Builder met @IBDesignable
Zoeken…
Opmerkingen
Het werd veel eenvoudiger om aangepaste bedieningselementen te maken in Interface Builder met de introductie van de richtlijnen @IBDesignable
en @IBInspectable
in Swift. Ontwikkelaars kunnen nu rijke, complexe, volledig geanimeerde bedieningselementen bouwen met slechts een paar extra regels code. Ik ben verrast door hoeveel ontwikkelaars deze functie nog niet volledig kunnen omarmen, en ik merk vaak dat het toevoegen van slechts een paar regels code aan bestaande klassen hen zo veel gemakkelijker kan maken om mee te werken.
Merk op dat deze functies ook beschikbaar zijn in Objective-C en een geweldige manier zijn om oude klassen tot leven te brengen. De syntactische equivalenten in Objective-C zijn IB_DESIGNABLE en IBInspectable, maar voor nu zal ik me concentreren op voorbeelden in Swift.
Een live-gerenderde afgeronde weergave
Dit is zo'n veel voorkomende vereiste in de ontwikkeling van iOS, en het was altijd iets dat puur in code moest worden gedaan (of met afbeeldingen - ja!). Nu is het ongelooflijk eenvoudig om een voorbeeld van zijn soort dingen in Interface Builder te bekijken, er is absoluut geen excuus om het niet te gebruiken.
Hier is de code: -
import UIKit
@IBDesignable
class MyRoundedView: UIView {
@IBInspectable var radius: CGFloat = 8 {
didSet {
self.layer.cornerRadius = radius
}
}
override func awakeFromNib() {
self.layer.cornerRadius = self.radius
self.layer.masksToBounds = true
}
}
Om deze klasse te gebruiken, voeg je deze toe aan je project en open je het storyboard in IB en maak je een normale UIView van een behoorlijke omvang. Geef het een achtergrondkleur zodat u het kunt zien, navigeer vervolgens naar de Identity Inspector in het rechterpaneel Hulpprogramma's en wijzig het klasse-type in de vervolgkeuzelijst in MyRoundedView
.
Wanneer u dit doet, zou u een derde label moeten zien verschijnen onder "Klasse" en "Module" met de naam "Designables", en er zou even "Updaten" moeten staan voordat het wordt gewijzigd in "Actueel". Dit betekent dat Xcode uw code voor MyRoundedView
succes opnieuw heeft gecompileerd.
Nu kunt u de Attributes Inspector openen en zou u (misschien na een korte pauze) een nieuw gedeelte bovenaan het paneel met de kop "Mijn afgeronde weergave" en een nieuw attribuut met de naam "Radius" met de waarde 8 moeten zien (omdat dat is de beginwaarde die we in de code hebben ingesteld). Dit is in de Attributes Inspector verschenen omdat we het hebben gemarkeerd als @IBInspectable
.
Je kunt dit nu veranderen in een ander nummer en je zou de afgeronde hoekradiusupdate in realtime moeten zien!