its*_*ode 562 cocoa-touch uiview ios
我的登录视图有一个子视图,其中有一个UIActivityView和一个UILabel说"登录...".此子视图的拐角不是圆角.我怎样才能让它们成圆形?
有没有办法在我的xib中做到这一点?
Ed *_*rty 1196
试试这个
#import <QuartzCore/QuartzCore.h> // not necessary for 10 years now :)
Run Code Online (Sandbox Code Playgroud)
...
view.layer.cornerRadius = 5;
view.layer.masksToBounds = true;
Run Code Online (Sandbox Code Playgroud)
注意:如果你想圆角应用到UIViewController的看法,它不应该在视图控制器的构造函数应用,而是在-viewDidLoad后view实际实例.
Guj*_*min 257
您还可以使用界面构建器的" 用户定义的运行时属性"功能来设置layer.cornerRadius值的键路径.请确保您包含QuartzCore库.
这个技巧也适用于设置layer.borderWidth但是它不起作用,layer.borderColor因为这期望CGColor不是a UIColor.
您将无法在故事板中看到效果,因为这些参数是在运行时评估的.

Gui*_*tro 61
现在,您可以在UIView中使用swift类别(图片中的代码),并在@IBInspectable中显示故事板上的结果(如果您使用的是类别,请仅使用cornerRadius而不是layer.cornerRadius作为键路径.
extension UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
}
Run Code Online (Sandbox Code Playgroud)

Sur*_*gch 54
简短回答:
myView.layer.cornerRadius = 8
myView.layer.masksToBounds = true // optional
Run Code Online (Sandbox Code Playgroud)
如果你已经得到这个答案,你可能已经看到了足以解决你的问题.我正在添加这个答案,以便为事情做他们所做的事情提供更多的视觉解释.
如果你从常规开始,UIView它有方角.
let blueView = UIView()
blueView.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
blueView.backgroundColor = UIColor.blueColor()
view.addSubview(blueView)
Run Code Online (Sandbox Code Playgroud)
您可以通过更改cornerRadius视图的属性来赋予它圆角layer.
blueView.layer.cornerRadius = 8
Run Code Online (Sandbox Code Playgroud)
较大的半径值会产生更圆的角
blueView.layer.cornerRadius = 25
Run Code Online (Sandbox Code Playgroud)
较小的值会产生较少的圆角.
blueView.layer.cornerRadius = 3
Run Code Online (Sandbox Code Playgroud)
这可能足以解决您的问题.但是,有时视图可以具有超出视图边界的子视图或子图层.例如,如果我是添加子视图像这样
let mySubView = UIView()
mySubView.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
mySubView.backgroundColor = UIColor.redColor()
blueView.addSubview(mySubView)
Run Code Online (Sandbox Code Playgroud)
或者如果我要添加子层这样
let mySubLayer = CALayer()
mySubLayer.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
mySubLayer.backgroundColor = UIColor.redColor().CGColor
blueView.layer.addSublayer(mySubLayer)
Run Code Online (Sandbox Code Playgroud)
然后我会结束
现在,如果我不想让事情悬而未决,我可以做到这一点
blueView.clipsToBounds = true
Run Code Online (Sandbox Code Playgroud)
或这个
blueView.layer.masksToBounds = true
Run Code Online (Sandbox Code Playgroud)
这给出了这个结果:
这两个clipsToBounds和masksToBounds是相等的.只是第一个用于,UIView第二个用于CALayer.
Kri*_*sen 43
与Ed Marty所做的不同:
#import <QuartzCore/QuartzCore.h>
[v.layer setCornerRadius:25.0f];
[v.layer setMasksToBounds:YES];
Run Code Online (Sandbox Code Playgroud)
你需要setMasksToBounds来加载IB中的所有对象...我遇到了一个问题,我的视图已经四舍五入,但是没有来自IB的对象:/
这固定了= D希望它有所帮助!
pab*_*z55 27
+(void)roundView:(UIView *)view onCorner:(UIRectCorner)rectCorner radius:(float)radius
{
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds
byRoundingCorners:rectCorner
cornerRadii:CGSizeMake(radius, radius)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = view.bounds;
maskLayer.path = maskPath.CGPath;
[view.layer setMask:maskLayer];
[maskLayer release];
}
Run Code Online (Sandbox Code Playgroud)
关于它的很酷的部分是你可以选择你想要四舍五入的角落.
Sam*_*han 19
您需要先导入头文件 <QuartzCore/QuartzCore.h>
#import QuartzCore/QuartzCore.h>
[yourView.layer setCornerRadius:8.0f];
yourView.layer.borderColor = [UIColor redColor].CGColor;
yourView.layer.borderWidth = 2.0f;
[yourView.layer setMasksToBounds:YES];
Run Code Online (Sandbox Code Playgroud)
不要错过使用 - setMasksToBounds否则可能无法显示效果.
Vak*_*kas 11
您可以使用以下自定义UIView类,它也可以更改边框颜色和宽度.因为这是IBDesignalbe您可以更改界面构建器中的属性.
import UIKit
@IBDesignable public class RoundedView: UIView {
@IBInspectable var borderColor: UIColor = UIColor.white {
didSet {
layer.borderColor = borderColor.cgColor
}
}
@IBInspectable var borderWidth: CGFloat = 2.0 {
didSet {
layer.borderWidth = borderWidth
}
}
@IBInspectable var cornerRadius: CGFloat = 0.0 {
didSet {
layer.cornerRadius = cornerRadius
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
view.layer.cornerRadius = 25
view.layer.masksToBounds = true
Run Code Online (Sandbox Code Playgroud)
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20, 50, 200, 200)];
view.layer.backgroundColor = [UIColor whiteColor].CGColor;
view.layer.cornerRadius = 20.0;
view.layer.frame = CGRectInset(v.layer.frame, 20, 20);
view.layer.shadowOffset = CGSizeMake(1, 0);
view.layer.shadowColor = [[UIColor blackColor] CGColor];
view.layer.shadowRadius = 5;
view.layer.shadowOpacity = .25;
[self.view addSubview:view];
[view release];
Run Code Online (Sandbox Code Playgroud)
在 SwiftUI 中,您可以cornerRadius直接在任何您想要的地方使用修饰符View。\n例如这个问题:
Text("Signing In\xe2\x80\xa6")\n .padding(16)\n .background(Color.red)\n .cornerRadius(50)\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n请注意,不再有类似菱形的半径,因此即使您将cornerRadius设置为超过高度的一半,它也会平滑地变圆。
\n\n\n| 归档时间: |
|
| 查看次数: |
313113 次 |
| 最近记录: |