MacOS 开发- NSBox

原创 2017年09月14日 11:48:41

定义

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
};
版权声明:本文为博主原创文章,转载请附上本文链接地址。

相关文章推荐

NSBox

分组和滚动视图。 NSBox、NSScrollView、和NSSplitView类用于为窗口中的视图集合或其它视图对象提供图形“附件”。您可以通过NSBox类将窗口中的元素分组,并为整组元素描画一个边...
  • yuanya
  • yuanya
  • 2014年03月19日 11:13
  • 1087

NSBox

分组和滚动视图。 NSBox、NSScrollView、和NSSplitView类用于为窗口中的视图集合或其它视图对象提供图形“附件”。您可以通过NSBox类将窗口中的元素分组,并为整组元素描画一个边...
  • yuanya
  • yuanya
  • 2014年03月19日 11:13
  • 1087

MacOS 开发 - Lable

也许你也听说,cocoa 中并没有 UILable ,也没有 NSLabel。 cocoa 中的 label 实际上是 NSTextField,并将editable = NO; 来实现显示效果。这是...

macOS逆向开发之class-dump

一、配置class-dump 1.打开http://stevenygard.com/projects/class-dump下载class-dump-3.5.dmg2.双击class-dump-3.5...

MacOS上Node.js开发环境安装与测试

1.首先我们安装管理工具homebrew。打开终端,输入下面指令。 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/H...

使用Swift开发一个MacOS的菜单状态栏App

这两天突然想看看OSX下的App开发,看了几篇文章。下面这一篇我觉得入门是非常好的。我仅转述为中文,并非原文翻译。原文地址:http://footle.org/WeatherBar/ 下面开始介绍如...

MacOS 搭建Android开发环境

如何在MAC OS X 安装Android SDK我以往用的开发环境都是以MAC OS安装VMware来跑不同的Windows OS,目前慢慢的将所要开发的项目由以往的传统的Wintel转移到Mobi...

macOS 下配置 MAMP 开发环境(Mac + Apache + Mysql + PHP)

macOS 中已经内置了 PHP、Python、Ruby、Perl 等常用的脚本语言,以及 Apache HTTP 服务器,所以使用起来非常方便。本文以最新的 macOS Sierra 10.12 配...

macos/unix下x264开发

macos/unix下x264开发x264新手入门下载x264源码videolan提供下载地址,git安装(没有git的自己装一下),终端进入你想保存源码的目录,输入:git clone git://...

macOS系统下搭建Android开发环境

在开始搭建Android开发环境之前,或者在学习Android开发之前,建议先学习Java入门知识。 Mac OS X系统在10.12.0起正式更名为“macOS”。 下面将从Android SD...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MacOS 开发- NSBox
举报原因:
原因补充:

(最多只允许输入30个字)