|
|
楼主

吾爱游客
发表于 2026-5-13 10:44
|自己
尊敬的审核管理人员您好,本人是一名应用技术Coder,擅长Web/iOS/桌面应用问题处理,特来申请一下会员。希望管理人员能够允以通过,以便后续在吾爱论坛交流与学习。
1、申 请 I D:SuperPengGe
2、个人邮箱:tianxiadiyi00001@outlook.com
3、原创技术文章:https://www.jianshu.com/p/f3e077b4c196
部分代码展示:
/** @brief 设置任意角圆角 @param view 需要设置的控件 @param radius 圆角值 @param positions 位置数组 - @1(左上), @2(右上), @3(左下), @4(右下) */- (void)yp_setCornerRadiusWithView:(UIView *)view radius:(CGFloat)radius positions:(NSArray <NSNumber *>*)positions { // view.clipsToBounds = YES; 会触发离屏渲染问题 - 根据实际情况来决定是否放开 if (@available(iOS 11.0, *)) { // 默认四个角 CACornerMask corners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner | kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner; if (positions.count == 1) { // 只设置了一个角 NSInteger positionVal = [positions[0] integerValue]; corners = positionVal == 1 ? kCALayerMinXMinYCorner : positionVal == 2 ? kCALayerMaxXMinYCorner : positionVal == 3 ? kCALayerMinXMaxYCorner : kCALayerMaxXMaxYCorner; }else if (positions.count == 2) { // 设置了两个角 if ([positions containsObject:@1]) { if ([positions containsObject:@2]) {// 12 corners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner; }else if ([positions containsObject:@3]) {// 13 corners = kCALayerMinXMinYCorner | kCALayerMinXMaxYCorner; }else {// 14 corners = kCALayerMinXMinYCorner | kCALayerMaxXMaxYCorner; } }else if ([positions containsObject:@2]) { if ([positions containsObject:@3]) { // 23 corners = kCALayerMaxXMinYCorner | kCALayerMinXMaxYCorner; }else { // 24 corners = kCALayerMaxXMinYCorner | kCALayerMaxXMaxYCorner; } }else {// 34 corners = kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner; } }else if (positions.count == 3) { // 设置了三个角 if ([positions containsObject:@1] && [positions containsObject:@2]) { if ([positions containsObject:@3]) { // 123 corners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner | kCALayerMinXMaxYCorner; }else { // 124 corners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner | kCALayerMaxXMaxYCorner; } }else if ([positions containsObject:@1] && [positions containsObject:@3]) { // 134 corners = kCALayerMinXMinYCorner | kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner; }else {// 234 corners = kCALayerMaxXMinYCorner | kCALayerMinXMaxYCorner | kCALayerMaxXMaxYCorner; } } view.layer.cornerRadius = radius; view.layer.maskedCorners = corners; }else { // 默认四个角 UIRectCorner corners = UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight; if (positions.count == 1) { // 只设置了一个角 NSInteger positionVal = [positions[0] integerValue]; corners = positionVal == 1 ? UIRectCornerTopLeft : positionVal == 2 ? UIRectCornerTopRight : positionVal == 3 ? UIRectCornerBottomLeft : UIRectCornerBottomRight; }else if (positions.count == 2) { // 设置了两个角 if ([positions containsObject:@1]) { if ([positions containsObject:@2]) {// 12 corners = UIRectCornerTopLeft | UIRectCornerTopRight; }else if ([positions containsObject:@3]) {// 13 corners = UIRectCornerTopLeft | UIRectCornerBottomLeft; }else {// 14 corners = UIRectCornerTopLeft | UIRectCornerBottomRight; } }else if ([positions containsObject:@2]) { if ([positions containsObject:@3]) { // 23 corners = UIRectCornerTopRight | UIRectCornerBottomLeft; }else { // 24 corners = UIRectCornerTopRight | UIRectCornerBottomRight; } }else {// 34 corners = UIRectCornerBottomLeft | UIRectCornerBottomRight; } }else if (positions.count == 3) { // 设置了三个角 if ([positions containsObject:@1] && [positions containsObject:@2]) { if ([positions containsObject:@3]) { // 123 corners = UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft; }else { // 124 corners = UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomRight; } }else if ([positions containsObject:@1] && [positions containsObject:@3]) { // 134 corners = UIRectCornerTopLeft | UIRectCornerBottomLeft | UIRectCornerBottomRight; }else {// 234 corners = UIRectCornerTopRight | UIRectCornerBottomLeft | UIRectCornerBottomRight; } } UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:corners cornerRadii:CGSizeMake(radius, radius)]; CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; maskLayer.frame = view.bounds; maskLayer.path = path.CGPath; view.layer.mask = maskLayer; }}
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|