#ios #objective-c #uiview
#iOS #objective-c #uiview
Вопрос:
Я рисую круг с белой обводкой и цветом, указанным свойством, используя этот код:
- (void)drawRect:(CGRect)rect {
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextClearRect(contextRef, rect);
// Set the border width
CGContextSetLineWidth(contextRef, 1.5);
// Set the circle fill color to GREEN
CGFloat red, green, blue, alpha;
BOOL didConvert = [_routeColor getRed:amp;red green:amp;green blue:amp;blue alpha:amp;alpha];
CGContextSetRGBFillColor(contextRef, red, green, blue, 1.0);
// Set the cicle border color to BLUE
CGContextSetRGBStrokeColor(contextRef, 255.0, 255.0, 255.0, 1.0);
// Fill the circle with the fill color
CGContextFillEllipseInRect(contextRef, rect);
// Draw the circle border
CGContextStrokeEllipseInRect(contextRef, rect);
}
Изображение, которое я получаю обратно, выглядит следующим образом:
Как я могу удалить черный?
Комментарии:
1. Предложение — избавиться от вызовов
CGContextSetRGBFillColor
иCGContextSetRGBStrokeColor
. Вместо этого выполните следующее:[_routeColor setFill]; [[UIColor whiteColor] setStroke];
. И, к вашему сведению, значения цвета должны быть в диапазоне 0.0 — 1.0, поэтому все ваши значения 255.0 должны быть 1.0.
Ответ №1:
Установите для backgroundColor
вида значение [UIColor clearColor]
.
Обратите внимание, что настройку цвета фона необходимо выполнить только один раз, при создании представления.
Комментарии:
1. Чтобы добавить к этому ответу — установите цвет фона в
init
методе пользовательского представления, а не вdrawRect:
.2. Спасибо @rmaddy, я добавил примечание к ответу.
Ответ №2:
Мне это было нужно. Когда я установил это, сработало.
self.opaque = NO;
Ответ №3:
Это сработало для меня на Swift 3:
self.isOpaque = false
self.backgroundColor = UIColor.clear
Комментарии:
1. Как сказал @ndnguyen, вам нужно установить эти свойства внутри методов инициализации
2. Вы также можете установить их в раскадровке.
Ответ №4:
При инициализации необходимо установить цвет фона на clearColor.
Вот пример
-(id)initWithCoder:(NSCoder*)aDecoder
{
self = [super initWithCoder:aDecoder];
if(self)
{
self.backgroundColor = [UIColor clearColor];
}
return self;
}
- (void)drawRect:(CGRect)rect {
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextClearRect(contextRef, rect);
// Set the border width
CGContextSetLineWidth(contextRef, 1.5);
// Set the circle fill color to GREEN
CGFloat red, green, blue, alpha;
BOOL didConvert = [_routeColor getRed:amp;red green:amp;green blue:amp;blue alpha:amp;alpha];
CGContextSetRGBFillColor(contextRef, red, green, blue, 1.0);
// Set the cicle border color to BLUE
CGContextSetRGBStrokeColor(contextRef, 255.0, 255.0, 255.0, 1.0);
// Fill the circle with the fill color
CGContextFillEllipseInRect(contextRef, rect);
// Draw the circle border
CGContextStrokeEllipseInRect(contextRef, rect);
}