Files
fanyin-ios/TUIKit/TUIMultimediaPlugin/Common/View/TUIMultimediaSplitter.m
2025-08-12 14:27:12 +08:00

77 lines
2.0 KiB
Objective-C

// 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