2016-06-08 47 views
0

如何爲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的孩子吧?也許有更好的方法?

感謝提前準備好回答。

回答

0
+ (instancetype)newLineWithColor: (UIColor *)color { 
    return [super newWithComponent:[CKComponent 
           newWithView:{ 
            UIView.class, 
            {{@selector(setBackgroundColor:), color}} 
           } 
           size:{ 
            .height = 0.5 
           }]]; 
} 

或:

你可以使用一個背景圖像拉伸圖像,並在其上畫線。