- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我通常使用 cornerRadius
属性将圆角应用于 View 层。当 View 只需要圆顶角或底角时,我改为应用带有贝塞尔曲线路径的 mask (使用 bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:
)。当这两种方法组合在同一 View 层次结构中时,圆角未正确对齐,如下图所示:
可以使用以下代码重现此简化示例:
@interface ViewController : UIViewController
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.backgroundColor = [UIColor blackColor];
CGRect frame = CGRectMake(50.0, 50.0, 100.0, 100.0);
CGFloat radius = 20.0;
// Apply cornerRadius to green backdrop view.
UIView *backdropView = [[UIView alloc] initWithFrame:frame];
backdropView.backgroundColor = [UIColor greenColor];
backdropView.layer.cornerRadius = radius;
[self.view addSubview:backdropView];
// Apply bezier path mask to black front view.
UIView *frontView = [[UIView alloc] initWithFrame:frame];
frontView.backgroundColor = [UIColor blackColor];
CAShapeLayer * maskLayer = [CAShapeLayer layer];
maskLayer.path = [UIBezierPath bezierPathWithRoundedRect:frontView.bounds
byRoundingCorners:UIRectCornerAllCorners
cornerRadii:CGSizeMake(radius, radius)].CGPath;
frontView.layer.mask = maskLayer;
[self.view addSubview:frontView];
}
@end
设置涉及的不同层的 shouldRasterize
属性并没有解决问题。我想了解为什么会这样。一种可能的解决方法是始终应用贝塞尔曲线路径掩码,而不是简单地设置拐角半径,但这感觉有点矫枉过正。
最佳答案
这个网站很好地解释了:http://www.paintcodeapp.com/blogpost/code-for-ios-7-rounded-rectangles (简而言之,这是 iOS7 独有的东西)
有关额外的说明,请参阅: http://www.mani.de/backstage/?p=483
关于ios - 为什么应用 bezierPathWithRoundedRect 蒙版会产生与设置图层的 cornerRadius 不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22453095/
所以这是我的自定义 GroupBox:
我有一个 UILabel,我使用cornerRadius 在图层上创建一个半径。最终目标是让标签看起来像苹果在邮件应用程序中所做的那样。 一开始看起来很棒,但是一旦你深入到该行并返回几次,圆边的质量就
为了实现上述设计,我使用了以下代码。每件事都是完美的。 for(....) { CALayer *layer=[CALayer layer]; [layer setFrame:CGRe
我试图在左下角和右下角的 UIView 上圆角。 extension UIView { func roundBottom(raduis: CGFloat){ let ma
如何根据按钮的边框计算cornerRadius属性来创建圆角。 我不喜欢为每个按钮项重新定义每次角 cornerRadius。 我为 UIButton 创建扩展。 extension UIButton
我想要一个没有定义 CornerRadius 的按钮和另外两个定义了的按钮,我该如何实现?
我想完美地剪辑 UIView 的边界以作为圆形进行交互,但是我将角半径、蒙版和剪辑设置为边界并且它显示正确,它作为正方形移动,如图所示: 我使用的代码是: let bubble1 = UIView(f
我在 MKMapView 层中添加了一个 cornerRadius 类似 [self.routeMapView layer].cornerRadius = 20.0f; 此属性仅对左上角有效。休息完全
我正在尝试制作圆形个人资料图片,并按照本教程末尾设置的步骤 (http://valeriodonfrancesco.com/add-circular-mask-uiimage-easy-way/) 进
这个问题在这里已经有了答案: Circular Image Becoming a Diamond Not Circle - Swift 3 (3 个答案) Cut a UIImage into a
我尝试创建一个按钮并使用该代码设置样式: button.tintColor = UIColor.white button.contentEdgeInsets = UIEdgeInset
我需要沿着圆角矩形创建长度恒定的线条动画。所以我在创建所需的 BezierPath UIBezierPath(roundedRect: CGRect(x: 50, y: 50, width: 100,
在我的 tableviews 自定义单元格中,我有一张图片: 我想要 cornerRadius = 20。但由于某种原因它不起作用我使用了这段代码: cell.offerImage.layer.cor
我总是使用简单的方法来获取 View 圆角 + (void)setRoundedCornersByView:(UIView*) givenView roundAngle:(int)roundAngle
当我尝试使用 app:cornerRadius 设置圆角时,我在我的 android 项目中添加了一个 Material 按钮,我发现它根本不起作用。 最佳答案 只需使用 Material 主题。将
我想在我的整个应用程序上使用圆角,我使用了: [self.window.layer setCornerRadius:5.0]; [self.window.layer setMasksToBounds:
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view
我尝试为 View 的角提供不同大小的角。首先,我将角指定为最小半径的所有角,然后尝试将左侧的 2 个角更改为更大的尺寸。 enter image description here func roun
我在回收站 View 中创建了一个卡片 View ,我的代码运行良好,但现在的问题是卡片 View 在运行时不显示圆边和高程,但它显示在设计代码中。我的代码如下所示 activity_main
我从下面的代码中得到编译时错误。 12sp @font/raleway_bold @color/colorPrimary 25dp
我是一名优秀的程序员,十分优秀!