带有圆角的UILabel(Xcode 4.5和iOS 6)

10

我刚在一个视图中添加了一个UILabel组件,现在想让它成为一个圆角UILabel。我已经阅读了一些与此问题相关的问题和答案,但所有的答案都说我必须更改源代码。在新的Xcode 4.5和iOS6中是否真的有必要?另外,我不确定是否能够看到由mainstoryboard生成的代码。

任何帮助将不胜感激。

非常感谢, 马尔科斯


如果我的或Ismael的回答对您有帮助,请接受它们。我想要提高我的声誉,我相信Ismael也是这样。 - Andrey Chernukha
7个回答

11
您可以在Interface Builder中完成所有操作。
XCode 中,选择您的.xib文件(或storyboard),打开Interface Builder。单击您的UILabel并打开Identity inspector(如果您不知道它在哪里,请转到XCode的帮助菜单并键入 "Identity inspector")。单击User Defined Runtime Attributes窗格下的加号按钮,并编写layer.cornerRadius作为Key Path,选择Number作为Type,并将Value设置为5(或任何其他数字)。
如果现在运行您的项目,则应该得到一个圆角UILabel

2
只有在“剪切子视图”被选中时,这才有效(我使用的是Xcode 6)。 - mnl

10

要制作带有圆角的UILabel,请按照以下步骤进行:

#import <QuartzCore/QuartzCore.h>

那么您应该参考您的UILabel。

yourLabel.layer.cornerRadius = 5;

当然,5只是一个例子


非常感谢。最后一个问题:是否有特定的位置添加此代码?我不确定是否可以访问由Xcode Interface Builder生成的代码。在控制器上是否有任何特殊方法应该添加此代码? - vilelam
你应该有一个与IB中创建的UILabel*连接的输出变量。然后你可以在任何你想要的地方为这个变量设置圆角半径。viewDidLoad或viewWillAppear都可以正常工作。 - Andrey Chernukha

2
将 QuartzCore 框架添加到您的项目框架中。
import "QuartzCore/QuartzCore.h" 

使用以下代码 -
label.layer.cornerRadius = 2.0; // radius depend on how much rounded corner you want.
label.clipsToBounds = TRUE;

1
你需要在代码中添加 #import "QuartzCore/QuartzCore.h",并在某个位置使用它。
label.layer.cornerRadius = 2.0; // or whatever radius you want

非常感谢。最后一个问题:是否有特定的位置添加此代码?我不确定是否可以访问由Xcode Interface Builder生成的代码。是否有控制器上的特殊方法应该添加此代码? - vilelam
这取决于您的单元格所在的位置。您需要在控制器上引用它,如果它是由接口构建器创建的,则应将其添加到您的 viewDidLoad 方法中。 - Ismael
非常好!我成功完成了。我将代码添加到viewDidLoad方法中,现在它运行得非常顺畅。 - vilelam

1
我想分享一种在较新的开发环境(使用Swift)中更好的方法。使用以下代码,您将在Interface Builder中获得一个特殊字段,可让您设置角半径。在属性检查器中出现了一个名为“View”的新子部分,在其中有一个名为“Corner Radius”的项目。
#if !os(watchOS)
    // watchOS UI designer allows setting of a corner radius.  For
    // iOS and tvOS, an Interface Builder extension is needed.
    extension UIView {
        @IBInspectable var cornerRadius: CGFloat {
            get {
                return layer.cornerRadius
            }
            set {
                layer.cornerRadius = newValue
                layer.masksToBounds = newValue > 0
            }
        }
    }
#endif

1

您可以在界面构建器中通过将layer.cornerRadius添加为“身份检查器”下“用户定义的运行时属性”中的键之一来完成。


-1

是的,只能通过添加代码来实现,正如其他人在这里提到的。不幸的是,Interface Builder现在无法做到这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接