macOS 开发- NSBox

定义

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI工程仔

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值