У меня есть UIView
и внутри нее я нарисовал линию, используя Core Graphics, переопределив drawRect
. Это представление также содержит одно подзаголовок, который также рисует линию. Однако, в то время как взгляды используют в значительной степени тот же код (для целей тестирования, по крайней мере), линия, нарисованная на них не выглядит одинаково:iPhone Core Graphics более толстая пунктирная линия для subview
Как вы можете видеть - пунктирную линию в верхнее заметно толще нижнего, и я понятия не имею, почему. Ниже приведен код, используемый двумя UIViews
в их методах drawRect
. Если у вас есть идеи, почему это происходит, я буду благодарен вам за помощь и совет!
Первый взгляд:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [[UIColor whiteColor] CGColor]);
CGFloat dashes[] = {1,1};
CGContextSetLineDash(context, 0.0, dashes, 2);
CGContextSetLineWidth(context, 0.6);
CGContextMoveToPoint(context, CGRectGetMinX(rect), CGRectGetMaxY(rect));
CGContextAddLineToPoint(context, CGRectGetMaxX(rect), CGRectGetMaxY(rect));
CGContextStrokePath(context);
SubUIView *view = [[SubUIView alloc] initWithFrame:rect];
[self addSubview:view];
[view release];
мнение, безусловно, только втягиваются один раз. Я признаю, что drawRect
может не быть лучшим местом для добавления подвью, но проблема остается даже с добавлением в основном метода initWithFrame
.
Второй Вид:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [[UIColor whiteColor] CGColor]);
CGFloat dashes[] = {1,1};
CGContextSetLineDash(context, 0.0, dashes, 2);
CGContextSetLineWidth(context, 0.6);
CGContextMoveToPoint(context, CGRectGetMinX(rect), CGRectGetMidY(rect));
CGContextAddLineToPoint(context, CGRectGetMaxX(rect), CGRectGetMidY(rect));
CGContextStrokePath(context);
Почему вы добавляете subview в первый вид 'drawRect: '? – jer
@jer: Это обязательно имеет значение? Я могу добавить subview из другого метода, такого как 'initWithFrame', но по-прежнему существует разница в толщине линии. Если я не собираюсь добавлять subviews в представление, которое «рисует» на себе и, следовательно, на проблему (?), Но я еще нигде не читал .... – JoeR
@JoeR, да, это может иметь значение - вы добавляете subviews каждый раз, когда ваш взгляд рисуется, чтобы вы могли закончить несколько идентичных надстроек, расположенных друг над другом, и это может привести к тому, что линии subview выглядят более толстыми, поскольку они были нарисованы несколько раз. – Vladimir