MacOS 開發 - NSButton - 勾選框(NSButtonTypeSwitch)
NSButtonTypeSwitch 就是勾選樣式
其他樣式可參考:http://blog.csdn.net/lovechris00/article/details/77976480
allowsMixedState 代表是否可以混合選擇。YES-有三種狀態,-1、1、0;NO-2種狀態,1、0。
使用 setAction 來監聽。
只設置 buttonType 即可,不用設置 bezielType,設置了也無效。存疑: 這兩者如何組合使用?
- (void)addCheckBtn{
NSButton *btn0 = [[NSButton alloc]init];
btn0.frame = NSMakeRect(100, 100, 100, 100);
btn0.wantsLayer = YES;
btn0.layer.backgroundColor = [NSColor cyanColor].CGColor;
[btn0 setButtonType:NSButtonTypeSwitch];
//YES-有三種狀態,-1、1、0
//NO-2種狀態,1、0
btn0.allowsMixedState = YES;
[self.window.contentView addSubview:btn0];
[btn0 setAction:@selector(valueChange:)];
}
- (void)valueChange:(NSButton *)sender{
NSButton *checkBtn = sender;
BOOL isOn = checkBtn.state;
NSLog(@" %d",isOn);
}
---------------------
作者:lovechris00
來源:CSDN
原文:https://blog.csdn.net/lovechris00/article/details/77977824
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
NSButtonType
typedef NS_ENUM(NSUInteger, NSButtonType) {
NSButtonTypeMomentaryLight = 0,
NSButtonTypePushOnPushOff = 1,
NSButtonTypeToggle = 2,
NSButtonTypeSwitch = 3,
NSButtonTypeRadio = 4,
NSButtonTypeMomentaryChange = 5,
NSButtonTypeOnOff = 6,
NSButtonTypeMomentaryPushIn = 7,
NSButtonTypeAccelerator NS_ENUM_AVAILABLE_MAC(10_10_3) = 8,
NSButtonTypeMultiLevelAccelerator NS_ENUM_AVAILABLE_MAC(10_10_3) = 9,
};
顯示結果
小結:
- 1、6 類型(NSButtonTypePushOnPushOff、NSButtonTypeOnOff),選中狀態是藍色,再次點擊才會恢復到原來的顏色。
- 0、2、7(NSButtonTypeMomentaryLight、NSButtonTypeToggle、NSButtonTypeMomentaryPushIn) 點擊時會有背景色(高亮狀態)。
- 5(NSButtonTypeMomentaryChange) 點擊時會有高亮狀態,文字一閃,但是沒有高亮的背景色。
- 3(NSButtonTypeSwitch) 適合做多選
- 4 (NSButtonTypeRadio) 適合做單選。
測試代碼
- (void)addSerialBtn2{
CGFloat btnW = 80;
CGFloat btnH = 40;
for (int i = 0; i < 8; i++) {
NSButton *btn = [[NSButton alloc]initWithFrame:NSMakeRect( 20 + (i % 5) * (btnW + 5) ,50 + (i / 5) * (btnH + 40), btnW, btnH)];
// btn.bezelStyle = i;
btn.bezelStyle = NSRoundedBezelStyle;
[btn setButtonType:i];
NSString *btnName = [NSString stringWithFormat:@"按鈕 - %d",i];
[btn setTitle:@"按鈕"];
// [btn setTitle:@""];
btn.wantsLayer = YES;
btn.layer.backgroundColor = [NSColor cyanColor].CGColor;
[self.window.contentView addSubview:btn];
NSTextField *field = [[NSTextField alloc]initWithFrame:NSMakeRect(CGRectGetMinX(btn.frame), CGRectGetMinY(btn.frame) - 22, btnW, 20)];
field.stringValue = btnName;
field.bezelStyle = i;
[self.window.contentView addSubview:field];
}
}
---------------------
MacOS 開發 - NSButton - 勾選框(NSButtonTypeSwitch)