Я хочу, чтобы путь к изображению был отрисован под ресурсами
blockquote>Ресурс для рисования - это файл на вашем компьютере разработчика. Это не файл на устройстве. На устройстве нет пути к нему.
я предоставляю некоторый фрагмент кода
blockquote>В Android нет схемы
drawable
. Это также не путь к изображению.Если для вашего
Card
требуетсяUri
, вы можете попробоватьandroid.resource
как схему .
UISegmentedControl имеет свойство tintColor - это позволяет вам изменить цвет элемента управления, но не общий «стиль» (закругленная, скошенная форма):
segmentedControl.tintColor = [UIColor blueColor];
Что касается создания UIImages «на лету» вы можете создать CGContext, сделать любой рисунок, который вам нужен в этом контексте (включая строки), а затем получить UIImage из CGImage контекста:
CGContextRef drawContext = CGBitmapContextCreate(<many parameters>);
//do drawing here
CGImageRef finalImage = CGBitmapContextCreateImage(drawContext);
UIImage *cellImage = [UIImage finalImage];
Обратите внимание, что если вы используете код вроде UIView.appearance (). TintColor = .myColor
(или эквивалент в ObjC), скорее всего, эффекта не будет.
Я хотел добиться чего-то похожего - установить цвет фона выбранного сегмента на один цвет, в то время как «контур» остальных сегментов был другого цвета.
В значительной степени заимствуя из ответа Portland Runner , идея состоит в том, чтобы создать подкласс UISegmentedControl и переопределить 2 метода для стилизации начального состояния, а также для захвата события изменения, чтобы стилизовать его автоматически, когда пользователь выбирает разные сегменты.
- (void)layoutSubviews {
[super layoutSubviews];
[self updateSegmentColors];
}
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesEnded:touches withEvent:event];
[self updateSegmentColors];
}
- (void)updateSegmentColors {
NSArray* segments = [self.subviews sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
// UISegmentedControl segments use UISegment objects (private API). But we can safely cast them to UIView objects.
float v1 = ((UIView *)obj1).frame.origin.x;
float v2 = ((UIView *)obj2).frame.origin.x;
if (v1 < v2) return NSOrderedAscending;
else if (v1 > v2) return NSOrderedDescending;
else return NSOrderedSame;
}];
for (int i=0; i<segments.count; i++) {
if (i == self.selectedSegmentIndex) {
[segments[i] setTintColor:[UIColor redColor]];
} else {
[segments[i] setTintColor:[UIColor grayColor]];
}
}
}
Xcode 11
для раскадровки управление и несколько параметров цвета теперь доступен. Если Вам нужно дальнейшее улучшение - проверяют Определяемые пользователем Атрибуты времени выполнения.