Есть ли способ использовать NSArray IBInspectable
для определения нескольких значений в пользовательском представлении раскадровки?
Я знаю, что NSArray
не имеет никакой информации о типе объекта, который будет храниться в нем, поэтому, вероятно, это проблема. Но есть какое-то решение, использующее аннотацию или что-то в этом роде?
Что я хочу сделать, так это установить NSArray
из UIColors
через раскадровку и нарисовать градиентный слой в представлении во время визуализации раскадровки.
Я начал создавать два свойства с именами startColor и endColor. Это отлично работает, но я хочу сделать это более общим.
Это мой метод drawRect:
- (void)drawRect:(CGRect)rect {
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = self.bounds;
gradientLayer.colors = [NSArray arrayWithObjects:(id)[self.startColor CGColor], (id)[self.endColor CGColor], nil];
[self.layer addSublayer:gradientLayer];
}
И я хочу сделать что-то вроде этого:
- (void)drawRect:(CGRect)rect {
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = self.bounds;
// colorsArray should be an IBInspectable property in order to be setted on Storyboard Attributes Inspector
gradientLayer.colors = self.colorsArray;
[self.layer addSublayer:gradientLayer];
}