我登录查看具有具有一个子视图UIActivityView
和UILabel
说:“登录...”。 此子视图具有未圆角。 我怎样才能让他们圆的?
有没有办法做到这一点我XIB里面?
我登录查看具有具有一个子视图UIActivityView
和UILabel
说:“登录...”。 此子视图具有未圆角。 我怎样才能让他们圆的?
有没有办法做到这一点我XIB里面?
试试这个
#import <QuartzCore/QuartzCore.h> // not necessary for 10 years now :)
...
view.layer.cornerRadius = 5;
view.layer.masksToBounds = true;
注意:如果你想圆角应用到UIViewController
的看法,它不应该在视图控制器的构造函数应用,而是在-viewDidLoad
,后view
实际实例。
您还可以使用自定义属性运行界面生成器的功能键程设置用户 layer.cornerRadius
的值。 请确保您包括QuartzCore
库虽然。
这招也适用于设置layer.borderWidth但它不会为工作layer.borderColor
,因为这需要一个CGColor
不是UIColor
。
因为这些参数在运行时进行评估,您将无法看到故事板的影响。
现在你可以在使用的UIView迅速类别(代码波纹管图片)与@IBInspectable在故事板显示结果(如果您使用的范畴,只能使用cornerRadius而不是layer.cornerRadius作为关键路径。
extension UIView {
@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}
}
简短的回答:
myView.layer.cornerRadius = 8
myView.layer.masksToBounds = true // optional
如果你来到了这个答案,你可能已经看到了足够解决你的问题。 我加入这个答案给一位用于更直观的解释,为什么事情做他们做什么。
如果你开始一个普通UIView
它有方形角。
let blueView = UIView()
blueView.frame = CGRect(x: 100, y: 100, width: 100, height: 50)
blueView.backgroundColor = UIColor.blueColor()
view.addSubview(blueView)
您可以通过改变给它圆角cornerRadius
视图的财产layer
。
blueView.layer.cornerRadius = 8
较大的半径值给予更多的圆角
blueView.layer.cornerRadius = 25
而较小的值少给圆角。
blueView.layer.cornerRadius = 3
这可能足以解决你的问题就在这里。 但是,有时一个视图可以有一个子视图或者就是那张在视图边界以外的子层。 例如,如果我要添加这样的副视点
let mySubView = UIView()
mySubView.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
mySubView.backgroundColor = UIColor.redColor()
blueView.addSubview(mySubView)
或者如果我要加这样一个子层
let mySubLayer = CALayer()
mySubLayer.frame = CGRect(x: 20, y: 20, width: 100, height: 100)
mySubLayer.backgroundColor = UIColor.redColor().CGColor
blueView.layer.addSublayer(mySubLayer)
那我就结束了
现在,如果我不想要的东西挂在界外,我能做到这一点
blueView.clipsToBounds = true
或这个
blueView.layer.masksToBounds = true
这给出了这样的结果:
无论clipsToBounds
和masksToBounds
是等效的 。 这仅仅是第一个被使用UIView
,二是使用CALayer
。
一种不同的方法比一个埃德马蒂做的:
#import <QuartzCore/QuartzCore.h>
[v.layer setCornerRadius:25.0f];
[v.layer setMasksToBounds:YES];
您需要setMasksToBounds它加载来自IB的所有对象...我得到在我的观点得到了四舍五入的问题,但并没有从IB有对象:/
这个固定= d希望它能帮助!
正如描述的这篇博客 ,这里是圆一个UIView的角落的方法:
+(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];
}
关于它的凉爽的部分是,你可以选择要四舍五入这角落。
首先,您需要导入头文件<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];
千万不要错过使用- setMasksToBounds
,否则效果可能不会显示。
您可以使用下面的自定义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
}
}
}
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];
@IBDesignable
class DesignableView: UIView {
}
extension UIView
{
@IBInspectable
var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
}
}
}
view.layer.cornerRadius = 25
view.layer.masksToBounds = true
请输入Quartzcore framework
那么你必须设置setMaskToBounds
到TRUE
这个非常重要的线。
然后[[yourView layer] setCornerRadius:5.0f];
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;
}
在OBJç编程方式做到这一点
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;][1]
[self.view addSubview:view];
我们也可以从stoaryboard做到这一点。
layer.cornerRadius Number 5
如果圆角不是在viewDidLoad中()是更好的viewDidLayoutSubview写代码的工作()
-(void)viewDidLayoutSubviews
{
viewTextfield.layer.cornerRadius = 10.0 ;
viewTextfield.layer.borderWidth = 1.0f;
viewTextfield.layer.masksToBounds = YES;
viewTextfield.layer.shadowRadius = 5;
viewTextfield.layer.shadowOpacity = 0.3;
viewTextfield.clipsToBounds = NO;
viewTextfield.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
}
希望这可以帮助!
您也可以使用图像:
UIImage *maskingImage = [UIImage imageNamed:@"bannerBarBottomMask.png"];
CALayer *maskingLayer = [CALayer layer];
maskingLayer.frame = CGRectMake(-(self.yourView.frame.size.width - self.yourView.frame.size.width) / 2
, 0
, maskingImage.size.width
, maskingImage.size.height);
[maskingLayer setContents:(id)[maskingImage CGImage]];
[self.yourView.layer setMask:maskingLayer];
设置cornerRadious物业全方位视角
集masksToBounds布尔值,图像也不会仍然圆角半径边界外绘制
view.layer.cornerRadius = 5;
view.layer.masksToBounds = YES;
在雨燕4.2和10.1的Xcode
let myView = UIView()
myView.frame = CGRect(x: 200, y: 200, width: 200, height: 200)
myView.myViewCorners()
//myView.myViewCorners(width: myView.frame.width)//Pass View width
view.addSubview(myView)
extension UIView {
//If you want only round corners
func myViewCorners() {
layer.cornerRadius = 10
layer.borderWidth = 1.0
layer.borderColor = UIColor.red.cgColor
layer.masksToBounds = true
}
//If you want complete round shape, enable above comment line
func myViewCorners(width:CGFloat) {
layer.cornerRadius = width/2
layer.borderWidth = 1.0
layer.borderColor = UIColor.red.cgColor
layer.masksToBounds = true
}
}
使用UIView的扩展:
extension UIView {
func addRoundedCornerToView(targetView : UIView?)
{
//UIView Corner Radius
targetView!.layer.cornerRadius = 5.0;
targetView!.layer.masksToBounds = true
//UIView Set up boarder
targetView!.layer.borderColor = UIColor.yellowColor().CGColor;
targetView!.layer.borderWidth = 3.0;
//UIView Drop shadow
targetView!.layer.shadowColor = UIColor.darkGrayColor().CGColor;
targetView!.layer.shadowOffset = CGSizeMake(2.0, 2.0)
targetView!.layer.shadowOpacity = 1.0
}
}
用法:
override func viewWillAppear(animated: Bool) {
sampleView.addRoundedCornerToView(statusBarView)
}
ON的Xcode 6你试试
self.layer.layer.cornerRadius = 5.0f;
要么
self.layer.layer.cornerRadius = 5.0f;
self.layer.clipsToBounds = YES;