使用AutoLayout

时间:2016-07-22 06:32:23

标签: ios objective-c uitableview cashapelayer

我有一个包含两个标签的表视图,这两个标签支持多行并垂直放置在容器中。我已经修复了两个标签之间的距离。标签文本可以是两行或三行。我正在使用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];
}

0 个答案:

没有答案