如何编写通用的UIRectCorner函数?

 来人把老师拖出I去毙了 发布于 2023-02-13 18:05

这是objective-c代码:

UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:_backgroundImageView.bounds byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(3.0, 3.0)];

我想做的是,我想解析4个布尔值,然后修改byRoundingCorners.但问题是,例如,我isRectCornerBottomLeftYES和他们的其余部分NO,我会做这样的事情:

maskPath = [UIBezierPath bezierPathWithRoundedRect:_backgroundImageView.bounds byRoundingCorners:(UIRectCornerBottomLeft) cornerRadii:CGSizeMake(3.0, 3.0)];

但我怎么能控制UIRectCorner?当然,我可以做很多其他事情来检查是否isRectCornerBottomLeftYES,以及哪一个是NO写出每个条件.但除此之外,我该如何简化这种逻辑呢?谢谢.

1 个回答
  • 没有真正的方法来"简化"逻辑.如果您有4个BOOL值,则需要检查每个值:

    UIRectCorner corners = 0;
    if (isRectCornerBottomLeft) {
        corners |= UIRectCornerBottomLeft;
    }
    if (isRectCornerBottomRight) {
        corners |= UIRectCornerBottomRight;
    }
    if (isRectCornerTopLeft) {
        corners |= UIRectCornerTopLeft;
    }
    if (isRectCornerTopRight) {
        corners |= UIRectCornerTopRight;
    }
    

    你也可以这样做:

    UIRectCorner corners = (isRectCornerBottomLeft ? UIRectCornerBottomLeft : 0) |
                           (isRectCornerBottomRight ? UIRectCornerBottomRight : 0) |
                           (isRectCornerTopLeft ? UIRectCornerTopLeft : 0) |
                           (isRectCornerTopRight ? UIRectCornerTopRight : 0);
    

    2023-02-13 18:09 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有