Я хочу разместить некоторые «ручки» на UIView
У меня есть экран.drawRect: не работает
Итак, я создаю более UIView
с, по одному на каждом углу кадра прямоугольника UIView
«s, и я просто хочу, чтобы нарисовать круг, который„заполняет“прямоугольник, который является кадр„осилить“UIView
,
Вот что я имею в виду:
Как создать "HandleView":
CGPoint upperLeft = CGPointMake([[self viewToMove] frame].origin.x - 5, [[self viewToMove] frame].origin.y - 5);
HandleView *uL = [[HandleView alloc] initWithFrame:CGRectMake(upperLeft.x, upperLeft.y, 10, 10)];
[self setUpperLeftHandle:uL];
[uL release];
[[self view] addSubview:[self upperLeftHandle]];
DrawRect: для HandleView:
- (void)drawRect:(CGRect)rect {
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
[[UIColor orangeColor] set];
CGContextFillEllipseInRect(context, [self frame]);
}
Что я получаю просто набор черных прямоугольников, где я помещаю HandleViews. Я не уверен, почему они черные, но я могу изменить цвет, изменив свойство [HandleView backgroundColor]
. Я не могу, однако, получить что-либо, чтобы DRAW с этой точки зрения. Вызов setNeedsDisplay
, похоже, не имеет значения.
Кроме того, вызывается метод drawRect:
, поэтому есть проблема с кодом там, вероятно, нигде.
Прошло некоторое время с тех пор, как я испортил пользовательский рисунок, но я не помню, чтобы это было тяжело.
Что мне не хватает?
Спасибо !!!
Update:
Модифицированный код следующим образом:
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
// Initialization code
[self setBackgroundColor:[UIColor clearColor]];
}
return self;
}
- (void)drawRect:(CGRect)rect {
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 100, 100, 100, 1.0);
CGContextFillEllipseInRect(context, rect);
}
Теперь я вижу круг, но только там, где он перекрывает другой вид. Где он сидит на вершине «фона» UIView, я ничего не вижу, что вижу. Кроме того, даже если цвет (100, 100, 100), он показывает белый/светло-серый.
В чем дело?
Ум, я бы попробовал CGContextSetRGBFillColor вместо [[UIColor orangeColor]]. Кроме того, избегайте использования [self frame] внутри этого метода: вы уже передали в качестве параметра rect, используйте это или получите окно клипа с CGContextGetClipBoundingBox. Ссылка на CGContext и Руководство по программированию 2D кварца очень хорошо отражают эту тему. – sigsegv
Да, установка [[UIColor orangeColor] установлена] была ошибкой. Я взял это и изменил [self frame] на прямой, но все равно не кубик. Мысли? – mbm29414
Я новичок в задании вопросов здесь ... есть ли способ отметить это решение или он просто остается «открытым»? – mbm29414