Мне нужно добиться чего-то подобного (пожалуйста, прикрепите ScreenShot). Наилучшее возможное решение, которое мне пришло, UICollectionView
. Я создал закругленную границу вдоль ячейки и надел кнопку на ячейку. Теперь для пунктирной прямой я использовал CAShapeLayer
с BezierPath
и добавил слой к моему collectionview background with background color set to clear color
. Здесь возникает проблема, я не вижу пунктирной линии. Вот что я пробовал. Теперь у меня есть пара вопросов. Отвечая, пожалуйста, считайте меня новичком.
1) Почему мои строки не отображаются.
2) Как рассчитать ширину между двумя ячейками, прямо сейчас я устанавливаю случайное число.
3) Есть ли другой подход, который может более эффективно решить этот вариант использования.
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
UIBezierPath *borderPath;
CGFloat borderWidth;
KKCollectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"testCell" forIndexPath:indexPath];
borderPath = [UIBezierPath bezierPath];
[borderPath moveToPoint:CGPointMake(cell.frame.origin.x + cell.frame.size.width -1 , cell.frame.origin.y + 2)];
[borderPath addLineToPoint:CGPointMake(cell.frame.origin.x + cell.frame.size.width + 50, cell.frame.origin.y +2)];
borderWidth = 1.0;
[self dottedLineWithPath:borderPath withborderWidth:borderWidth];
return cell;
}
/** creating dotted line **/
- (void)dottedLineWithPath:(UIBezierPath *)path withborderWidth:(CGFloat)lineWidth
{
CAShapeLayer *shapelayer = [CAShapeLayer layer];
shapelayer.strokeStart = 0.0;
shapelayer.strokeColor = [UIColor blackColor].CGColor;
shapelayer.lineWidth = borderWidth;
shapelayer.lineJoin = kCALineJoinRound;
shapelayer.lineDashPattern = [NSArray arrayWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:2 ], nil];
shapelayer.path = path.CGPath;
[self.milestoneCollection.backgroundView.layer addSublayer:shapelayer];
}