0
我想讓我的自定義UICollectionViewCell有一個虛線的邊框,我嘗試過使用圖層和貝塞爾路徑,但沒有一種方法有所幫助。UICollectionViewCell虛線邊框
我想讓我的自定義UICollectionViewCell有一個虛線的邊框,我嘗試過使用圖層和貝塞爾路徑,但沒有一種方法有所幫助。UICollectionViewCell虛線邊框
在你UICollectionViewCell's
子類
static CGFloat const kDashedBorderWidth = (2.0f);
static CGFloat const kDashedPhase = (0.0f);
static CGFloat const kDashedLinesLength[] = {4.0f, 2.0f};
static size_t const kDashedCount = (2.0f);
-(void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, kDashedBorderWidth);
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
CGContextSetLineDash(context, kDashedPhase, kDashedLinesLength, kDashedCount) ;
CGContextAddRect(context, rect);
CGContextStrokePath(context);
}
在類中添加此方法。
- (CAShapeLayer *) addDashedBorderWithColor: (CGColorRef)color withSize:(CGSize)size{
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
CGSize frameSize = size;
CGRect shapeRect = CGRectMake(0.0f, 0.0f, frameSize.width, frameSize.height);
[shapeLayer setBounds:shapeRect];
[shapeLayer setPosition:CGPointMake(frameSize.width/2,frameSize.height/2)];
[shapeLayer setFillColor:[[UIColor clearColor] CGColor]];
[shapeLayer setStrokeColor:color];
[shapeLayer setLineWidth:5.0f];
[shapeLayer setLineJoin:kCALineJoinRound];
[shapeLayer setLineDashPattern:
[NSArray arrayWithObjects:[NSNumber numberWithInt:10],
[NSNumber numberWithInt:5],
nil]];
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:shapeRect cornerRadius:15.0];
[shapeLayer setPath:path.CGPath];
return shapeLayer;
}
在您的cellForRowAtIndexPath
方法中寫下線代碼。
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier"@"cell"];
//Do what you want to set in your collectionViewCell
CAShapeLayer *maskLayer= [self addDashedBorderWithColor:[UIColor whiteColor].CGColor withSize:cell.borderView.frame.size];
cell.layer.mask = maskLayer;
視圖控制器的self.size是錯誤的? –
我沒有任何屬性作爲您正在使用的y自定義單元格中的邊框視圖。 –
我的意思是改變你想要繪製這個邊框的你自己的視圖名稱。 我剛剛給你發送了我的dummuy對象。 –