关闭

MacOS 开发 - NSSegmentedControl

标签: NSSegmentMacOS开发SegmentStySwitchTracmenu
1990人阅读 评论(1) 收藏 举报
分类:

NSSegmentedControl 是一个切换控件,包含的每一个 可点选项 为一个 segment


创建

- (void)addSegVC{

    NSSegmentedControl *segControl = [[NSSegmentedControl alloc]init];

    segControl.frame = NSMakeRect(100, 100, 200, 100);

    [self.window.contentView addSubview:segControl];
}

添加 segment

注意说明

  • 没有直接添加 segment 数组的方法,而是先添加数据、再依次设置每个 segment 的值。
  • 如果没有设置 segmentCount,即使设置了每个segment 也不会显示。

1、segment 为文字

segControl.segmentCount = 3;
[segControl setLabel:@"一" forSegment:0];

获取方法: labelForSegment:


2、segment 为图片

[segControl setImage:[NSImage imageNamed:NSImageNameUser] forSegment:1];
[segControl setImageScaling:NSImageScaleProportionallyDown forSegment:1];

segment - image


3、segment 为menu

    NSMenu *subMenu = [[NSMenu alloc] initWithTitle:@"Load_TEXT"];

    [subMenu addItemWithTitle:@"Load1"action:@selector(load1) keyEquivalent:@"E"];
    [subMenu addItemWithTitle:@"Load2"action:@selector(load2) keyEquivalent:@"R"];

    [segControl setLabel:@"menu" forSegment:3];

    [segControl setMenu:subMenu forSegment:3];
    [segControl setWidth:100 forSegment:3];

    [self.window.contentView addSubview:segControl];

注意:

  • 如果点击时,目录项显示为灰色,点击无效。可能是这个 menuitem 绑定的 action 没有实现。
  • 即使 menu 实现了 initWithTitle 方法,在 segment 上还是不会显示标题,依然需要使用 setLabel 来设置标题。如下:

segment - menu


添加监听 setAction

 [segControl setAction:@selector(segmentControlChange:)];

- (void)segmentControlChange:(NSSegmentedControl *)segControl{

    NSLog(@"tag : %d , selectedSegment : %d",segControl.tag,segControl.selectedSegment);

}

设置 segment 尺寸

设置好了每个 item 后,segment 的宽度并不会自动均分。只会对文字和图片自然包裹后显示。如上面设置后,显示如下:

这里写图片描述

需要依次设置 width:

[segControl setWidth:60 forSegment:0];

segmentStyle 样式

segControl.segmentStyle = i;

NSSegmentStyle 枚举

typedef NS_ENUM(NSInteger, NSSegmentStyle) {
NSSegmentStyleAutomatic = 0,
NSSegmentStyleRounded = 1,
NSSegmentStyleRoundRect = 3,
NSSegmentStyleTexturedSquare = 4,
NSSegmentStyleSmallSquare = 6,
NSSegmentStyleSeparated NS_ENUM_AVAILABLE_MAC(10_10) = 8,

/* In Mac OS X 10.7, 下面样式建议使用 NSSegmentStyleTexturedSquare 代替*/
NSSegmentStyleTexturedRounded NS_ENUM_AVAILABLE_MAC(10_5) = 2,
NSSegmentStyleCapsule NS_ENUM_AVAILABLE_MAC(10_5) = 5

}

NSSegmentStyle


NSSegmentSwitchTracking 枚举

NSSegmentSwitchTracking 决定了点击的结果和样式。

typedef NS_ENUM(NSUInteger, NSSegmentSwitchTracking) {

    NSSegmentSwitchTrackingSelectOne = 0,  //单选

    NSSegmentSwitchTrackingSelectAny = 1,  
    //可以多选,选中后 selectedSegment 只是最后一个 index,而非 indexArray

    NSSegmentSwitchTrackingMomentary = 2, 
    //点击时,才选中,selectedSegment : index ;点击停止后,就不会再选中,selectedSegment : 0

    NSSegmentSwitchTrackingMomentaryAccelerator 
    //点击时,才选中,selectedSegment : index ;点击停止后,就不会再选中,selectedSegment : -1
};

NSSegmentSwitchTracking


0
0
查看评论
发表评论
* 以上用户言论只代表其个人钱柜娱乐开户,不代表CSDN网站的钱柜娱乐开户或立场

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

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

学习Mac开发第三弹 通过WebView加载网页

学习Mac开发第三弹 通过WebView加载网页 添加WebKit.framework  关联Delegate 在新建工程的ViewController里拖放一个WebView,并用...
  • lengshengren
  • lengshengren
  • 2016-12-28 20:02
  • 2272

学习Mac开发第二弹 认识 NSAlert

学习Mac开发第二弹 认识 NSAlert 学过iOS开发的同学一定很熟悉在移动端的弹窗UIAlertView,在mac开发中变成了NSAlert,苹果为什么不统一呢?可能是历史原因吧!废话不多说!...
  • lengshengren
  • lengshengren
  • 2016-12-26 17:29
  • 1346

MacOS 搭建钱柜娱乐开户开发环境

如何在MAC OS X 安装钱柜娱乐开户 SDK我以往用的开发环境都是以MAC OS安装VMware来跑不同的Windows OS,目前慢慢的将所要开发的项目由以往的传统的Wintel转移到Mobi...
  • ttth202507
  • ttth202507
  • 2011-06-11 12:46
  • 8223

macOS系统下搭建钱柜娱乐开户开发环境

在开始搭建钱柜娱乐开户开发环境之前,或者在学习钱柜娱乐开户开发之前,建议先学习Java入门知识。 Mac OS X系统在10.12.0起正式更名为“macOS”。 下面将从钱柜娱乐开户 SD...
  • fjnu_se
  • fjnu_se
  • 2017-06-06 19:55
  • 243

macOS系统下搭建钱柜娱乐开户开发环境

在开始搭建钱柜娱乐开户开发环境之前,或者在学习钱柜娱乐开户开发之前,建议先学习Java入门知识。 Mac OS X系统在10.12.0起正式更名为“macOS”。 下面将从钱柜娱乐开户 SD...
  • alex_lei1231
  • alex_lei1231
  • 2017-06-03 12:53
  • 282

React Native 之搭建开发环境(MacOS用户)

必需软件HomebrewHomebrew, Mac系统的包管理器,用于安装NodeJS和一些其他必需的工具软件。/usr/bin/ruby -e "$(curl -fsSL https://raw.g...
  • hunterliy
  • hunterliy
  • 2017-04-19 14:48
  • 363

MacOS搭载opencv开发环境

笔者属于Mac小白,最近刚入手一台macbook air,一直没有时间搭建编程环境,这两天终于挤出时间开始使用Mac系统。目前的编程工具主要为eclipse以及xcode,笔者首先选择了使用xcode...
  • chienchia
  • chienchia
  • 2014-11-23 18:50
  • 579

macOS逆向开发之class-dump

一、配置class-dump 1.打开http://stevenygard.com/projects/class-dump下载class-dump-3.5.dmg2.双击class-dump-3.5...
  • xiaozhuanddapang
  • xiaozhuanddapang
  • 2017-05-03 01:17
  • 712

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

1.首先我们安装管理工具homebrew。打开终端,输入下面指令。 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/H...
  • honey199396
  • honey199396
  • 2017-05-11 10:18
  • 308
    钱柜娱乐开户
    个人资料
    • 访问:192728次
    • 积分:3224
    • 等级:
    • 排名:第12255名
    • 原创:123篇
    • 转载:6篇
    • 译文:1篇
    • 评论:97条
    最新评论