文档章节

OS X开发:NSButton按钮控件应用

珲少
 珲少
发布于 2017/07/18 11:57
字数 549
阅读 284
收藏 0

OS X开发:NSButton按钮控件应用

    NSButton控件用来创建功能按钮,和UIButton相比,其样式要丰富许多。NSButton继承自NSControl,其使用setTarget与setAction来添加触发方法,如下:

    NSButton * btn = [[NSButton alloc]initWithFrame:CGRectMake(50, 300, 90, 25)];
    [btn setTarget:self];
    [btn setAction:@selector(click)];
    [self.view addSubview:btn];

NSButton类中常用属性和方法解析如下:

//设置按钮标题
@property (copy) NSString *title;
//设置按钮开启状态的标题
@property (copy) NSString *alternateTitle;
//设置按钮图片
@property (nullable, strong) NSImage *image;
//设置按钮开启状态图片
@property (nullable, strong) NSImage *alternateImage;
//设置按钮图片位置
/*
typedef NS_ENUM(NSUInteger, NSCellImagePosition) {
    NSNoImage                           = 0,            //无图片
    NSImageOnly                         = 1,            //只有图片
    NSImageLeft                         = 2,            //图片在左侧
    NSImageRight                        = 3,            //图片在右侧
    NSImageBelow                        = 4,            //图片在下侧
    NSImageAbove                        = 5,            //图片在上侧
    NSImageOverlaps                     = 6,            //图片重叠
    NSImageLeading  API_AVAILABLE(macosx(10.12)) = 7,   //正方向
    NSImageTrailing API_AVAILABLE(macosx(10.12)) = 8    //逆方向
};
*/
@property NSCellImagePosition imagePosition;
//设置图片缩放模式
/*
typedef NS_ENUM(NSUInteger, NSImageScaling) {
    NSImageScaleProportionallyDown = 0, // 下方缩放
    NSImageScaleAxesIndependently,      // 整体缩放
    NSImageScaleNone,                   // 不缩放.
    NSImageScaleProportionallyUpOrDown, // 上下缩放
    
    NSScaleProportionally NS_ENUM_DEPRECATED_MAC(10_0, 10_10, "Use NSImageScaleProportionallyDown instead") = 0,
    NSScaleToFit NS_ENUM_DEPRECATED_MAC(10_0, 10_10, "Use NSImageScaleAxesIndependently instead"),
    NSScaleNone NS_ENUM_DEPRECATED_MAC(10_0, 10_10, "Use NSImageScaleNone instead")
};
*/
@property NSImageScaling imageScaling NS_AVAILABLE_MAC(10_5);
//图片是否环绕标题
@property BOOL imageHugsTitle;
//设置按钮状态
/*
enum {
    NSMixedState = -1,  //混合状态
    NSOffState   =  0,  //关闭状态
    NSOnState    =  1,  //开启状态
};
*/
@property NSInteger state;
//设置是否显示边框
@property (getter=isBordered) BOOL bordered;
//设置按钮是否透明
@property (getter=isTransparent) BOOL transparent;
//设置快捷键
@property (copy) NSString *keyEquivalent;
//设置富文本标题
@property (copy) NSAttributedString *attributedTitle;
@property (copy) NSAttributedString *attributedAlternateTitle;
//设置边框风格
@property NSBezelStyle bezelStyle;
//设置是否当鼠标移动到按钮上时显示边框
@property BOOL showsBorderOnlyWhileMouseInside;
//设置按钮声音
@property (nullable, strong) NSSound *sound;

下面是一些便捷创建按钮的方法:

//创建标准的按钮 包括标题和图片
+ (instancetype)buttonWithTitle:(NSString *)title image:(NSImage *)image target:(nullable id)target action:(nullable SEL)action;
//创建文字按钮
+ (instancetype)buttonWithTitle:(NSString *)title target:(nullable id)target action:(nullable SEL)action;
//创建图片按钮
+ (instancetype)buttonWithImage:(NSImage *)image target:(nullable id)target action:(nullable SEL)action;
//创建复选框按钮
+ (instancetype)checkboxWithTitle:(NSString *)title target:(nullable id)target action:(nullable SEL)action;
//创建单选框按钮
+ (instancetype)radioButtonWithTitle:(NSString *)title target:(nullable id)target action:(nullable SEL)action;

 

© 著作权归作者所有

珲少

珲少

粉丝 873
博文 390
码字总数 469911
作品 0
上海
iOS工程师
私信 提问
使用MonoMac实现Mac OSX上运行.NET开发应用程序

MonoMac是面向Mac OSX API的C#绑定,其API设计主要受到了MonoTouch的 启发,后者可以基于Mono开发原生的iOS应用程序。MonoMac套件的目标之一,也是发布独立的 .app应用程序,让最终用户摆脱对...

红薯
2011/03/19
12.4K
5
《从零开始学Swift》学习笔记(Day 64)——Cocoa Touch设计模式及应用之目标与动作

原创文章,欢迎转载。转载请注明:关东升的博客 目标(Target)与动作(Action)是iOS和OS X应用开发的中事件处理机制。 问题提出 如图所示是一个ButtonLabelSample案例设计原型图,其中包含一个...

tony关东升
2016/03/08
0
0
AppKit 类集合--DejalAppKitCategories

DejalAppKitCategories 是 OS X 上 AppKit 类集合,添加了一些有用的方法到类中:NSMenu, NSTableView,NSTextView 等等: NSButton+Dejal NSImage+Dejal NSMenu+Dejal NSOutlineView+Dejal ......

叶秀兰
2015/02/06
297
0
《从零开始学Swift》学习笔记(Day 64)——Cocoa Touch设计模式及应用之目标与动作

原创文章,欢迎转载。转载请注明:关东升的博客 目标(Target)与动作(Action)是iOS和OS X应用开发的中事件处理机制。 问题提出 如图所示是一个ButtonLabelSample案例设计原型图,其中包含一个...

智捷课堂
2016/01/25
18
0
【书坊赠书福利——第二期】《iOS 8开发指南》

本周是人邮IT书坊赠书的第二期,第一期参与度极高,微信君在此感谢你们的支持,第一期获奖赠书已全部寄出。 本周赠品 本周,微信君给大家推荐@人民邮电出版社-信息技术分社 刚刚上架的新书《...

生气的散人
2014/09/23
371
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机网络

计算机网络体系结构 OSI 其中表示层和会话层用途如下: 表示层 :数据压缩、加密以及数据描述,这使得应用程序不必关心在各台主机中数据内部格式不同的问题。 会话层 :建立及管理会话。 五层...

一只小青蛙
今天
2
0
0.01-Win10安装linux子系统

一、安装Debian子系统 -1、控制面板设置: -1.1、打开“控制面板” —— “程序” —— “启用或关闭Windows功能” —— 勾选 “适用于Linux的Windows子系统” -2、设置: -2.1、打开“设置”...

静以修身2025
昨天
2
0
init 0-6 (启动级别:init 0,1,2,3,4,5,6)

启动级别: init 0,1,2,3,4,5,6 这是个很久的知识点了,只是自己一直都迷迷糊糊的,今天在翻出来好好理解下。。 0: 停机 1:单用户形式,只root进行维护 2:多用户,不能使用net file system...

圣洁之子
昨天
2
0
Android Camera HAL浅析

1、Camera成像原理介绍 Camera工作流程图 Camera的成像原理可以简单概括如下: 景物(SCENE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为电信号,经过A/D(模数转...

天王盖地虎626
昨天
2
0
聊聊Elasticsearch的ProcessProbe

序 本文主要研究一下Elasticsearch的ProcessProbe ProcessProbe elasticsearch-7.0.1/server/src/main/java/org/elasticsearch/monitor/process/ProcessProbe.java public class ProcessProb......

go4it
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部