oc之mac用于多选一可用NSSegmentedControl

https://blog.csdn.net/yuanya/article/details/21538919

 

自定义的NSSegmentedControl

1529

https://github.com/peterpaulis/M6SelectOneSegmentedControl

 

 版权声明:本文为博主原创文章,转载请附上本文链接地址。from : https://blog.csdn.net/lovechris00 https://blog.csdn.net/lovechris00/article/details/78005210

 

 

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

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/sundaymac/p/10334264.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值