NSBox介绍

一个box是一个简单的视图,它可以在给自身绘制边框并命名,它在视觉上将其他视图(包括控件)组合在一起。

设置Box的标题

可以使用无标题或者标题在以下六个位置的box,要设置标题的位置,使用setTitlePosition:方法设置为以下选项中的任意一个,默认情况下,标题位置为NSAtTop

NSAboveTopNSAtTop NSBelowTop
NSAboveBottomNSAtBottom NSBelowBottom
NSNoTitle

要设置标题的字体,可以使用setTitleFont:方法。默认情况下,它是Control Content字体,改字体允许在Preferences应用程序中的外观面板的Fonts选项卡中设置。需要注意,当标题出现在box内部时,修改字体大小会影响box内容窗口的大小。

要设置标题,使用setTitle:。默认的是“Title”。若标题长度大于box的宽度,该标题将会被裁剪。

设置Box的边框样式

NSBox的外观样式需要结合使用setBoxType:setBorderType:两个方法。NSBox实例的默认box 类型为NSBOXPrimary,默认边框类型为NSGrooveBorder

图1示例调用setBorderType:指定边框类型为NSNoBorder

图1 无边框的NSBox

图2示例调用setBorderType:指定边框类型为NSBoxGrooveBorder,调用setBoxType:指定box类型为NSBoxPrimary

图2 primary样式的NSBox

图3示例调用setBorderType:指定边框类型为NSBoxGrooveBorder,调用setBoxType:指定box类型为NSBoxSecondary

图3 secondary样式的NSBox

注意,边框出现在box内部,可能会减少内容矩形框中的可用空间。

设置Box的子视图

要添加一个子视图到box上,可以使用通用的子视图添加方法,例如addSubView:replaceSubview:with:方法。那些NSView实际上被添加到NSBox的内容区域,该区域是在frame内部的一个NSView集合。NSView的子视图添加方法被NSBox重新定义,以确保子视图能够正确地放置在视图层级中。然而,需要注意的是subviews方法没有被重新定义:它返回只包含NSBox的内容视图一个元素的数组。

NSBox的内容视图的大小和位置依赖于NSBox的边框类型、标题位置、绘制标题的字体大小和通过设置setContentViewMargin:方法带来的额外尺寸。当NSBox被创建时,一个NSView的实例被同时创建并添加(作为NSBox对象的子视图)到NSBox上以填充其内容区域。如果你要用自己的NSView替换此内容视图,你的NSView将会被自动调整大小以适合内容区域。同样,当你调整NSBox的大小时它的内容视图将会自动调整并填充内容区域。

使用Box创建分隔符

一个NSBox实例可以用于在空间之间创建一个视觉分隔符。如图1所示。这是Cocoa等效的碳主题分隔符。

图1 垂直和水平分隔符

调用setBoxType:方法并指定box类型为NSBoxSeparator将会配置NSBox实例显示为一个分割器。

分隔符将以视图为中心绘制,并沿视图的最长轴方向绘制。如果NSBox的边界是相等的,那么分隔符将以水平方向绘制。

以下示例代码说明如何去创建一个视觉分隔符。

Listing1 创建视觉分隔符的示例代码

//创建水平方向分隔符
NSBox *horizontalSeparator = [[NSBox alloc] initWithFrame:NSMakeRect(15.0,250.0,250.0,1.0)];
    [horizontalSeparator setBoxType:NSBoxSeparator];

//创建垂直方向分隔符    
NSBox *verticalSeparator = [[NSBox alloc] initWithFrame:NSMakeRect(250.0,15.0,1.0,250.0)];
[verticalSeparator setBoxType:NSBoxSeparator];

//示例添加到当前窗口视图上,根据自身需要添加到对应视图
[self.window.contentView addSubview:horizontalSeparator];
[self.window.contentView addSubview:verticalSeparator];
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值