MacOS 开发- NSBox

来源:互联网 发布:灰蚂蚁太阳镜 知乎 编辑:程序博客网 时间:2024/06/05 07:40

  • 定义
    • NSBoxNSScrollView和NSSplitViewNSRulerView 比较
  • 创建及使用
  • 属性
    • 背景色
    • 标题
      • 只显示一行
      • NSTitlePosition 标题位置
    • NSBoxType 盒子样式

定义

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};
原创粉丝点击