Рисование вертикальной линии в ячейке табличного вида между динамическими метками с помощью AutoLayout
У меня есть табличное представление, содержащее две метки, которые поддерживают многострочный и расположены вертикально в контейнере. Я установил расстояние между обеими метками. Тексты меток могут быть двух или трех строчками. Я рисую линию между обоими метками, используя CAShapeLayer and UIBezierPath
, Моя проблема в том, что я не получаю фактическую ширину метки, поэтому вертикальная линия не рисуется в нужном месте. Вот код, который я использую для рисования. То, о чем я могу думать, это то, что мои линии рисуются первыми, а текст меток устанавливается после того, как это может стать проблемой. Как я могу это исправить?
Ограничения
ведущий космос от суперпредставления
трейлинг от второго лейбла
вертикально в контейнере
TableViewCell.m
@implementation KKCDDCell
{
CGFloat borderWidth;
UIBezierPath *borderPath;
}
- (void) awakeFromNib
{
[super awakeFromNib];
/** creating vertical line**/
[self verticalLine];
[self dottedLineWithPath:borderPath withborderWidth:borderWidth];
}
- (void)verticalLine
{
borderPath = [UIBezierPath bezierPath];
[borderPath moveToPoint:CGPointMake(self.labelOne.frame.origin.x +self.labelOne.frame.size.width + 10, self.frame.origin.y + 2)];
[borderPath addLineToPoint:CGPointMake(self.labelOne.frame.origin.x +self.labelOne.frame.size.width + 10, self.frame.origin.y + self.frame.size.height - 2)];
borderWidth = 1.0;
}
- (void)dottedLineWithPath:(UIBezierPath *)path withborderWidth:(CGFloat)lineWidth
{
CAShapeLayer *shapelayer = [CAShapeLayer layer];
shapelayer.strokeStart = 0.0;
shapelayer.strokeColor = [UIColor firstRowColor].CGColor;
shapelayer.lineWidth = borderWidth;
shapelayer.lineJoin = kCALineJoinRound;
shapelayer.lineDashPattern = [NSArray arrayWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:2 ], nil];
shapelayer.path = path.CGPath;
[self.contentView.layer addSublayer:shapelayer];
}