Я хотел бы установить различные элементы IBInspectable на основе информации из Интернета, которую я получаю. Например, у меня есть IBInspectables для зеленых, красных и оранжевых кругов. Если в запросе указано «зеленый», я бы хотел установить для isGreen inspectable значение «Да», а для других — «нет». То же самое касается двух других. Вы можете увидеть IBInspectables здесь. Я знаю, что могу сделать это с помощью кода, который я туда вставил, но есть ли способ программно переключать их?
Установить IBInspectable программно
Ответы (2)
Любой IBInspectable — это просто свойство, закодированное для просмотра в IB. Итак, если у вас есть это:
@IBInspectable var isGreen:Bool? {
didSet {
// code to color circle?
}
}
Ты можешь это сделать:
self.isGreen = true
person
dfd
schedule
03.12.2016
Итак, в моем ViewController я должен добавить @IBInspectable isGreen, а в viewWillAppear что мне написать?
- person Dragos Strugar; 03.12.2016
Где я должен определить, какие из них вызывать, и как их вызвать?
- person Dragos Strugar; 03.12.2016
Я неправильно понял ваш вопрос. Вероятно, вы могли бы провести рефакторинг, так как свойства IBInspectable уже знают тип UIColor. [ссылка] nshipster.com/ibinspectable-ibdesignable показывает хороший пример этого.
- person dfd; 03.12.2016
Ага. Спасибо. Очень хороший ресурс. Решил мою проблему. Вы должны ввести весь код, который изменяет пользовательский интерфейс в didSet {}
- person Dragos Strugar; 03.12.2016
Ты кажешься растерянным. Термин IBInspectable
описывает свойство объекта представления с тегом @IBInspectable
. Это сообщает Interface Builder, что вы хотите иметь возможность изменять это свойство изнутри Interface Builder.
Помимо того, что свойство IBInspectable редактируется из Interface Builder, оно ничем не отличается от любого другого свойства.
Если у вас есть класс CircleView со свойством диаметра:
class FooView: UIView {
@IBInspectable var diameter: CGFloat {
didSet {
//Code to do something with a change to the diameter property
}
}
И в вашем контроллере представления есть объект FooView с выходом, тогда вы можете изменить значение своего пользовательского свойства в коде, как и любое другое свойство:
class MyViewController: UIViewController {
@IBOulet weak var fooView: FooView!
@IBAction func buttonTapped(sender: UIButton) {
fooView.diameter += 5
}
}
person
Duncan C
schedule
03.12.2016