博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Cocoa(mac) Application 开发系列之二】总结一些常用控件及自定义View
阅读量:7221 次
发布时间:2019-06-29

本文共 4058 字,大约阅读时间需要 13 分钟。

上一篇已经对于xib与控件之间的关系都大致介绍了;

那么本篇不再详细解释如何如何连接控件以及控件代码等,直接给出代码以及需要注意的简单介绍下,便于童鞋们使用时可以给与参考:

1. 首先创建一个MyView类,继承NSView,如下:

1
2
3
4
5
6
7
8
9
10
11
12
//
//  MyView.h
//  ManyControlTest
//
//  Created by Himi on 12-6-6.
//  Copyright (c) 2012年 Himi. All rights reserved.
//
 
#import <Cocoa/Cocoa.h>
 
@interface MyView : NSView
@end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//
//  MyView.m
//  ManyControlTest
//
//  Created by Himi on 12-6-6.
//  Copyright (c) 2012年 Himi. All rights reserved.
//
 
#import "MyView.h"
 
@implementation MyView
- (id)initWithFrame:(NSRect)frame
{
    
self = [super initWithFrame:frame];
    
if 
(self) {
        
// Initialization code here.
    
}
     
    
return 
self;
}
 
- (
void
)drawRect:(NSRect)dirtyRect
{
     
    
NSString * str =@
"MyView   --by Himi"
;
     
    
//属性包装设置
    
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
     
    
//设置字体样式
    
[dic setObject:[NSFont fontWithName:@
"Times" 
size:14] forKey:NSFontAttributeName];
     
    
//设置字体颜色
    
[dic setObject:[NSColor redColor] forKey:NSForegroundColorAttributeName];
     
    
//绘制
    
[str drawAtPoint:NSMakePoint(50, 50) withAttributes:dic];
}
 
@end

代码很easy理解,不在赘述啦~

下面我们看一些基础常用控件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//
//  AppDelegate.h
//  ManyControlTest
//
//  Created by Himi on 12-6-3.
//  Copyright (c) 2012年 Himi. All rights reserved.
//
 
#import <Cocoa/Cocoa.h>
#import "MyView.h"
 
@interface AppDelegate : NSObject <NSApplicationDelegate,NSTabViewDelegate>
{
     
    
IBOutlet NSTextField *nfCount;
     
    
IBOutlet NSView *view ;
     
    
IBOutlet NSButton *btn;
     
    
IBOutlet NSPopUpButton *popBtn;
     
    
IBOutlet NSSegmentedControl * nsc;
     
    
IBOutlet NSForm *nForm;
     
    
IBOutlet NSMatrix * ms;
     
    
IBOutlet NSStepper * nsp;
     
    
IBOutlet NSTabView *tbView;
     
    
IBOutlet NSColorWell * nsWell;
     
    
IBOutlet MyView * myView;
     
}
 
-(IBAction)btnPress:(id)sender;
 
@property (assign) IBOutlet NSWindow *window;
 
@end

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//
//  AppDelegate.m
//  ManyControlTest
//
//  Created by Himi on 12-6-3.
//  Copyright (c) 2012年 Himi. All rights reserved.
//
 
#import "AppDelegate.h"
 
@implementation AppDelegate
 
@synthesize window = _window;
 
- (
void
)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    
//------绑定Delegate
    
[tbView setDelegate:self];
}
-(IBAction)btnPress:(id)sender{
     
    
//------ 处理NSButton的
    
if
(btn == sender){
        
[myView setHidden:YES];
    
}
     
     
    
//------处理NSPopUpButton
    
if
(popBtn == sender){
        
NSLog(@
"%@"
,[popBtn itemTitleAtIndex:0]);
        
NSLog(@
"%@"
,[popBtn itemTitleAtIndex:1]);
        
NSLog(@
"%@"
,[popBtn itemTitleAtIndex:2]);
    
}
     
    
//------处理 NSSegmentedControl
    
if
(nsc ==sender){
        
NSLog(@
"%i"
,[nsc isSelectedForSegment:0]);
        
NSLog(@
"%i"
,[nsc isSelectedForSegment:1]);
        
NSLog(@
"%i"
,[nsc isSelectedForSegment:2]);
    
}
     
    
//------处理 NSForm
    
if
(nForm == sender){
        
NSLog(@
"NSForm Cell 1 is %@"
,[[nForm cellAtIndex:0] stringValue]);
 
        
NSLog(@
"NSForm Cell 2 is %@"
,[[nForm cellAtIndex:1] stringValue]);
 
        
NSLog(@
"NSForm Cell 3 is %@"
,[[nForm cellAtIndex:2] stringValue]);
    
}
 
    
//------处理NSMatrix
    
if
(ms == sender){
        
NSLog(@
"NSMatrix is Select = %@"
,[[ms selectedCell] title]);
    
}
 
    
//-----处理 NSStepper
    
if
(nsp == sender){
         
        
NSString *string = [NSString stringWithFormat:@
"%i"
, (
int
)[nsp doubleValue]];
        
[nfCount setStringValue:string];
    
}
     
    
//-----处理 nsWell
    
if
(nsWell == sender){ 
        
NSColor* color =  [nsWell color];
        
NSLog(@
"R=%f,G=%f,B=%f"
,[color greenComponent],[color redComponent],[color blueComponent]);
    
}
}
 
//------处理 tbView
//-(void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem{}
-(
void
)tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem{
    
if 
([tbView indexOfTabViewItem:tabViewItem] == 0) {
        
NSLog(@
"view 111"
);
    
}
else 
if 
([tbView indexOfTabViewItem:tabViewItem] == 1) {
        
NSLog(@
"view 222"
);
    
}
}
 
@end
本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/969970,如需转载请自行联系原作者
你可能感兴趣的文章
python3.7+opencv3.4.1
查看>>
redux VS mobx (装饰器配合使用)
查看>>
solr 请求参数过长报错,Solr配置maxBooleanClauses属性不生效原因分析
查看>>
【Java】的四种引用的区别
查看>>
SQL Server 如何设置数据库的默认初始大小和自动增长大小
查看>>
cmd.exe启动参数详解
查看>>
Spring 注解<context:annotation-config> 和 <context:component-scan>的作用与区别
查看>>
Perl正则表达式引用
查看>>
混合开发 Hybird Cordova PhoneGap web 跨平台 MD
查看>>
高效沟通的秘籍-沟通视窗
查看>>
Go基础系列:import导包和初始化阶段
查看>>
怎么创建SpringBoot项目
查看>>
RabbitMQ 延迟队列实现订单支付结果异步阶梯性通知
查看>>
[转]angular 监听窗口滚动
查看>>
JavaScript toString、String和stringify方法区别
查看>>
各大公司Java后端开发面试题总结
查看>>
基于Elastalert的安全告警剖析
查看>>
浅谈进程、线程和协程三者之间的区别和联系
查看>>
SQL中ON和WHERE的区别
查看>>
art.template 循环里面分组。
查看>>