在Storyboard中能否设置UITextView或UILabel的边框?

32

我想在Storyboard中设置UITextViewUILabel的边框。

这可以通过编程方式实现,使用setBorderColorsetBorderWidth方法。

但是,在Storyboard中能否设置边框呢?


请查看以下链接:http://stackoverflow.com/questions/8716446/uitextview-issuehttps://dev59.com/P2ox5IYBdhLWcg3wKBN9 - IronManGill
3个回答

69

正如之前指出的那样,这些属性是属于“层”而非“视图”的一部分。但您仍然可以在IB中设置它们的值。正如hypercrypt所指出的那样,您可以使用用户自定义运行时属性。由于所有视图都具有“layer”属性,例如,您可以设置“layer.borderWidth”。

以下是一个案例,我在更改cornerRadius。效果非常好。

输入图像描述


4
好的。附加说明:您不能以这种方式设置边框颜色。但是,您可以设置边框宽度(和圆角半径)。不幸的是,我不知道为什么会这样。也许当您将颜色设置为属性时,它正在寻找UIColor,但CALayer需要一个CGColor? - Dan Morrow
这个可行。layer.cornerRadius 也可以正常工作。我正在使用 xcode 4.6.2,在 iPhone 5 和模拟器上进行了测试。 - Doug Null
@DanMorrow 是的,当您将用户定义的运行时属性设置为类型“Color”时,它表示UIColor而不是CGColor。您仍然可以获得所需的行为(能够从Interface Builder设置边框颜色),但是您需要一个自定义的UIView子类,其中包含一个从Storyboard设置并应用于边框颜色的UIColor属性,然后您需要在Storyboard中将视图嵌套在该子类的实例中。这是否比值得麻烦留给读者自己决定。 - Mark Amery
2
@MarkAmery 实际上你不需要子类化 UIView,你也可以通过分类实现这个功能。在分类接口中定义一个 UIColor 属性,实现设置器来设置 self.layer.borderColor = inputColor.CGColor,并实现获取器来返回 [UIColor colorWithCGColor:self.layer.borderColor] - dmur
1
在 @dmur 的基础上,你现在可以使用 IBDesignable,在 Xcode 6 中实际绘制它的外观。看看这个链接:http://nshipster.com/ibinspectable-ibdesignable/ - Dan Morrow

7

在 .m 文件中使用简单的代码,可以在视图中显示边框。

view.layer.cornerRadius = 5.0f;
view.layer.masksToBounds = NO;
view.layer.borderWidth = .5f;
view.layer.shadowColor = [UIColor orangeColor].CGColor;
view.layer.shadowOpacity = 0.4;
view.layer.shadowRadius = 5.0f;

问题是如何在Storyboard中实现。 - geekay
我知道这是一个老话题,但它出现在我的搜索中,因此解决方案是将用户定义的运行时属性“layer.borderWidth”设置为数字值(以点为单位,因此0.5将是1/2点)。 - Timothy Tripp

4
如果你的目标是iOS 6及以上版本,你可以在“Identity Inspector”中使用“User Defined Runtime Attributes”来设置任何属性。对于性能来说,这两种方法都没有问题,所以不用担心。

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