Как нарисовать линии для CKComponent (ComponentKit Facebook)?
Как нарисовать линии для CKComponent (ComponentKit Facebook)?
Я могу сделать это с помощью класса на основе UIView с методом drawrect.
[CKStackLayoutComponent newWithView:{ [ViewWithDrawrectMethod class],
{
{ CKComponentViewAttribute::LayerAttribute(@selector(setCornerRadius:)), @4.0 },
{ CKComponentViewAttribute::LayerAttribute(@selector(setBorderColor:)), (id)[[UIColor lightGrayColor] CGColor]},
{ CKComponentViewAttribute::LayerAttribute(@selector(setBorderWidth:)), @0.5},
{ @selector(setClipsToBounds:), @YES },
{ @selector(setBackgroundColor:), [UIColor whiteColor]},
}
}
@interface ViewWithDrawrectMethod : UIView
@end
@implementation ViewWithDrawrectMethod
-(void) drawRect: (CGRect) rect
{
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGFloat dash[] = {2.0, 3.0};
CGContextSetLineDash(context, 0, dash, 1);
CGRect paperRect = self.bounds;
CGPoint startPoint = CGPointMake(paperRect.origin.x,50);
CGPoint endPoint = CGPointMake(paperRect.origin.x + paperRect.size.width, 50);
CGContextSetLineCap(context, kCGLineCapSquare);
CGContextSetStrokeColorWithColor(context, [UIColor grayColor].CGColor);
CGContextSetLineWidth(context, 0.5);
CGContextMoveToPoint(context, startPoint.x , startPoint.y);
CGContextAddLineToPoint(context, endPoint.x, endPoint.y );
CGContextStrokePath(context);
}
Но я сомневаюсь, что право использовать компонент на основе UIViev, как дочерний элемент CKStackLayoutComponent? Может быть, есть лучший способ?
Спасибо за ваши ответы заранее.
1 ответ
+ (instancetype)newLineWithColor: (UIColor *)color {
return [super newWithComponent:[CKComponent
newWithView:{
UIView.class,
{{@selector(setBackgroundColor:), color}}
}
size:{
.height = 0.5
}]];
}
или же:
Вы можете использовать фоновое изображение как растягиваемое изображение и рисовать на нем линии.