gpt4 book ai didi

objective-c - 如何编写通用的 UIRectCorner 函数?

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:59 25 4
gpt4 key购买 nike

这是 objective-c 代码:

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

我想做的是,我想解析 4 个 bool 值,并修改 byRoundingCorners。但问题是,例如,我有 isRectCornerBottomLeftYES,其余的是 NO,我会做这样的事情:

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

但是我如何控制 UIRectCorner?当然,我可以做很多 if else 来检查 isRectCornerBottomLeft 是否为 YES,哪个为 NO 以写出所有条件。但除此之外,我怎样才能简化这个逻辑呢?谢谢。

最佳答案

没有真正的方法来“简化”逻辑。如果您有 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);

关于objective-c - 如何编写通用的 UIRectCorner 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20296222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com