UIView* viewWithRoundedCornersSize(float cornerRadius,UIView * original)
{
// Create a white border with defined width
original.layer.borderColor = [UIColor yellowColor].CGColor;
original.layer.borderWidth = 1.5;
// Set image corner radius
original.layer.cornerRadius =cornerRadius;
// To enable corners to be "clipped"
[original setClipsToBounds:YES];
return original;
}
19 回答
试试这个
...
注意:如果您尝试将圆角应用于
UIViewController
's view, it should not be applied in the view controller'构造函数,而是在-viewDidLoad
中,则实际实例化view
之后 .如果圆角在 viewDidload() 不起作用,最好在 viewDidLayoutSubview() 中编写代码
希望这可以帮助!
你需要先导入头文件
<QuartzCore/QuartzCore.h>
不要错过使用 -
setMasksToBounds
,否则可能无法显示效果 .斯威夫特
简短回答:
补充答案
如果你已经得到了这个答案,你可能已经看到了足以解决你的问题 . 我正在添加这个答案,以便为事情做他们做的事情提供更多的视觉解释 .
如果你从常规
UIView
开始它有方角 .您可以通过更改视图的
layer
的cornerRadius
属性为其提供圆角 .较大的半径值会产生更圆的角
较小的值会产生较少的圆角 .
这可能足以解决您的问题 . 但是,有时视图可以具有超出视图边界的子视图或子图层 . 例如,如果我要像这样添加一个子 view
或者如果我要像这样添加一个子 layer
然后我会结束
现在,如果我不希望事情悬而未决,我可以做到这一点
或这个
这给出了这个结果:
clipsToBounds
和masksToBounds
都是equivalent . 只是第一个与UIView
一起使用,第二个与CALayer
一起使用 .另见
How to add borders and shadow
Bezier paths
Transformations
为圆视图设置cornerRadious属性
set masksToBounds布尔值的图像将不会在角半径边界外绘制
Swift 4 - 使用IBDesignable
在对象中以编程方式执行此操作
我们也可以从stoaryboard这样做 .
在Xcode 6上试试吧
要么
如this blog post中所述,这是一个圆角UIView的角的方法:
关于它的很酷的部分是你可以选择你想要四舍五入的角落 .
您还可以使用图片:
您还可以使用界面构建器的 User Defined Runtime Attributes 功能将键路径
layer.cornerRadius
设置为值 . 请确保包含QuartzCore
库 .这个技巧也适用于设置layer.borderWidth但是它不适用于
layer.borderColor
,因为这需要CGColor
而不是UIColor
.您将无法在故事板中看到效果,因为这些参数是在运行时评估的 .
您可以使用以下自定义
UIView
类,它也可以更改边框颜色和宽度 . 因为这是IBDesignalbe
您也可以在界面构建器中更改属性 .请导入
Quartzcore framework
然后你必须将setMaskToBounds
设置为TRUE
这是非常重要的一行 .然后:
[[yourView layer] setCornerRadius:5.0f];
使用UIView扩展:
用法:
与Ed Marty所做的不同:
你需要setMasksToBounds才能从IB加载所有对象...我遇到了一个问题,我的视图已经四舍五入,但是没有来自IB的对象:/
这固定了= D希望它有所帮助!
现在,您可以在UIView中使用swift类别(图片中的代码),并使用@IBInspectable在故事板上显示结果(如果您使用的是类别,请仅使用cornerRadius而不是layer.cornerRadius作为键路径 .