77 lines
2.0 KiB
Mathematica
77 lines
2.0 KiB
Mathematica
|
|
// Copyright (c) 2024 Tencent. All rights reserved.
|
||
|
|
// Author: eddardliu
|
||
|
|
|
||
|
|
#import "TUIMultimediaSplitter.h"
|
||
|
|
|
||
|
|
@interface TUIMultimediaSplitter () {
|
||
|
|
CAShapeLayer *_shapeLayer;
|
||
|
|
}
|
||
|
|
|
||
|
|
@end
|
||
|
|
|
||
|
|
@implementation TUIMultimediaSplitter
|
||
|
|
- (id)initWithFrame:(CGRect)frame {
|
||
|
|
self = [super initWithFrame:frame];
|
||
|
|
_color = UIColor.lightGrayColor;
|
||
|
|
_lineWidth = 1;
|
||
|
|
_lineCap = kCGLineCapRound;
|
||
|
|
self.backgroundColor = UIColor.clearColor;
|
||
|
|
|
||
|
|
_shapeLayer = [[CAShapeLayer alloc] init];
|
||
|
|
[self.layer addSublayer:_shapeLayer];
|
||
|
|
|
||
|
|
[self updateShapeLayer];
|
||
|
|
return self;
|
||
|
|
}
|
||
|
|
- (void)updateShapeLayer {
|
||
|
|
_shapeLayer.frame = self.bounds;
|
||
|
|
CGPoint startPoint, endPoint;
|
||
|
|
CGSize size = self.bounds.size;
|
||
|
|
CGFloat inset = 0;
|
||
|
|
if (_axis == UILayoutConstraintAxisVertical) {
|
||
|
|
startPoint = CGPointMake(size.width / 2, inset);
|
||
|
|
endPoint = CGPointMake(size.width / 2, size.height - inset);
|
||
|
|
} else {
|
||
|
|
startPoint = CGPointMake(inset, size.height / 2);
|
||
|
|
endPoint = CGPointMake(size.width - inset, size.height / 2);
|
||
|
|
}
|
||
|
|
UIBezierPath *path = [UIBezierPath bezierPath];
|
||
|
|
[path moveToPoint:startPoint];
|
||
|
|
[path addLineToPoint:endPoint];
|
||
|
|
_shapeLayer.path = path.CGPath;
|
||
|
|
_shapeLayer.strokeColor = _color.CGColor;
|
||
|
|
_shapeLayer.lineWidth = _lineWidth;
|
||
|
|
switch (_lineCap) {
|
||
|
|
default:
|
||
|
|
case kCGLineCapButt:
|
||
|
|
_shapeLayer.lineCap = kCALineCapButt;
|
||
|
|
break;
|
||
|
|
case kCGLineCapRound:
|
||
|
|
_shapeLayer.lineCap = kCALineCapRound;
|
||
|
|
break;
|
||
|
|
case kCGLineCapSquare:
|
||
|
|
_shapeLayer.lineCap = kCALineCapSquare;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
- (void)layoutSubviews {
|
||
|
|
[self updateShapeLayer];
|
||
|
|
}
|
||
|
|
- (void)setAxis:(UILayoutConstraintAxis)axis {
|
||
|
|
_axis = axis;
|
||
|
|
[self updateShapeLayer];
|
||
|
|
}
|
||
|
|
- (void)setColor:(UIColor *)color {
|
||
|
|
_color = color;
|
||
|
|
[self updateShapeLayer];
|
||
|
|
}
|
||
|
|
- (void)setLineWidth:(CGFloat)lineWidth {
|
||
|
|
_lineWidth = lineWidth;
|
||
|
|
[self updateShapeLayer];
|
||
|
|
}
|
||
|
|
- (void)setLineCap:(CGLineCap)lineCap {
|
||
|
|
_lineCap = lineCap;
|
||
|
|
[self updateShapeLayer];
|
||
|
|
}
|
||
|
|
@end
|