1

我是 IOS 开发的新手,尝试通过以下链接创建顶部圆角标签 如何仅圆化 UILabel 的顶部两个角? 但是敷上面膜后,整个标签都看不到了,有什么线索吗?这是我的代码。

@synthesize title;
- (void)viewDidLoad
{

    [super viewDidLoad];
    title.layer.borderColor=[[UIColor blueColor]CGColor];
    title.layer.borderWidth=2;
    UIBezierPath *maskPath;
    maskPath = [UIBezierPath bezierPathWithRoundedRect:title.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(10.0f, 10.0f)];
    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.frame=title.bounds;
    maskLayer.path = maskPath.CGPath;
    title.layer.mask = maskLayer;
}

已编辑

尝试了在程序中创建标签的建议,布局变为

https://docs.google.com/file/d/0B60xg2ZCEjOqeTBEWG92N0NodFU/edit?usp=sharing 角落消失了,我仍然想将掩码设置为“标题”labal?

EDITED 最后放弃,为了他人的利益,我将标签包装在 uiview 中,将 uiview 映射到一个类(即 Myview.m),并将相同的代码放入方法“- (void)drawRect:(CGRect)rect{}”在“Myview.m”中。显示显示为我想要的!

4

3 回答 3

0

首先我的建议是不要使用“title”作为 UILabel 名称,因为所有 UIViewController 都有一个名称为 title 的属性。

更改标签名称并确保 IBOutlet 已连接后,添加以下代码:

    lblTitle.layer.masksToBounds = YES;

我只是想知道如果您在情节提要上创建标签,则不需要再次分配。我写了这段代码,它可以工作;

_L_corner.layer.borderColor =[[UIColor blueColor] CGColor];
_L_corner.layer.borderWidth = 5.0f;
_L_corner.layer.cornerRadius = 3.0f;
于 2013-09-01T14:14:12.027 回答
0

我不确定这是否是您的问题,因为您没有显示title标签是如何创建的,但是如果您在代码中创建它,您需要确保分配/初始化标签,并给它一个框架,然后将其添加为其父视图的子视图。

title = [[UILabel alloc] initWithFrame:CGRectMake(100.0f, 100.0f, 60.0f, 30.0f)];

title.layer.borderColor=[[UIColor blueColor]CGColor];
title.layer.borderWidth=2;
UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:title.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(10.0f, 10.0f)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame=title.bounds;
maskLayer.path = maskPath.CGPath;
title.layer.mask = maskLayer;

[self.view addSubview:title];
于 2013-09-01T14:02:02.010 回答
0

最后放弃,为了他人的利益,并使用了另一种解决方法:-
1)将标签包装在 uiview 中,
2)将 uiview 映射到一个类(即 Myview.m),
3)将相同的代码放入方法中

- (void)drawRect:(CGRect)rect{
title.layer.borderColor=[[UIColor blueColor]CGColor];
title.layer.borderWidth=2;
UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:title.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(10.0f, 10.0f)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame=title.bounds;
maskLayer.path = maskPath.CGPath;
title.layer.mask = maskLayer;

} 在“Myview.m”中。
显示显示为我想要的!

于 2013-09-03T02:42:26.540 回答