文章目录
定义
NSBox 继承自 NSView。一般作为有标题的容器使用,适用于分组和滚动视图。
NSBox、NSScrollView、和NSSplitView、NSRulerView 比较
类用于为窗口中的视图集合或其它视图对象提供图形“附件”。
- NSBox 类可以将窗口中的元素分组,并为整组元素描画一个边界。
- NSSplitView 类可以在垂直或水平方向附加一些视图,并为每个视图分配一定的公共区域,用户可以通过滑动控制条来重新分配视图的区域。
- NSScrollView 类,及其辅助类 NSClipView,为用户提供一个滚动机制,以及让用户初始化和控制滚动的图形对象。
- NSRulerView 类则可以为一个滚动视图添加标尺和标志。
创建及使用
代码如下
- (void)addBox{
NSBox *box=[[NSBox alloc] initWithFrame:NSMakeRect(15.0,10,300,300)];
[box setBoxType:NSBoxPrimary]; //盒子样式
[box setTitlePosition:NSAtTop]; //标题相对盒子的位置
box.contentViewMargins = NSMakeSize(20, 30); //左右、上下
box.contentView.wantsLayer = YES;
box.contentView.layer.backgroundColor = [NSColor cyanColor].CGColor;
NSTextField *textField = [[ NSTextField alloc]
initWithFrame:NSMakeRect(10,10,80,20)];
textField.backgroundColor = [NSColor redColor];
[box.contentView addSubview:textField];
[self.window.contentView addSubview:box];
}
属性
背景色
如下设置背景色无效
box.wantsLayer = YES;
box.layer.backgroundColor = [NSColor cyanColor].CGColor;
设置 contentView 有效:
box.contentView.wantsLayer = YES;
box.contentView.layer.backgroundColor = [NSColor cyanColor].CGColor;
问题:如何设置 margin 的背景色呢?希望知道的童鞋们回复我。
标题
只显示一行
- 无论标题输入多少文字,无论标题显示在哪个位置,只显示一行文字。
NSTitlePosition 标题位置
typedef NS_ENUM(NSUInteger, NSTitlePosition) {
NSNoTitle = 0,
NSAboveTop = 1,
NSAtTop = 2,
NSBelowTop = 3,
NSAboveBottom = 4,
NSAtBottom = 5,
NSBelowBottom = 6
};
NSBoxType 盒子样式
typedef NS_ENUM(NSUInteger, NSBoxType) {
NSBoxPrimary = 0, // group subviews with a standard look. default
NSBoxSecondary = 1, // same as primary since 10.3
NSBoxSeparator = 2, // vertical or horizontal separtor line. Not used with subviews.
NSBoxOldStyle = 3, // 10.2 and earlier style boxes
NSBoxCustom NS_ENUM_AVAILABLE_MAC(10_5) = 4 // draw based entirely on user parameters, not human interface guidelines
};
伊织 2017