【Cocoa(mac) Application 开发系列之二】总结一些常用控件及自定义View

简介:

上一篇已经对于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,如需转载请自行联系原作者
目录
相关文章
|
Android开发 iOS开发 开发者
轻松实现 UniApp Xcode 上传 IPA 无需 Mac,appuploder 一键上传助你高效开发!
轻松实现 UniApp Xcode 上传 IPA 无需 Mac,appuploder 一键上传助你高效开发!
|
调度 iOS开发 MacOS
【MacOS 系列】mac常用快捷键收集,包含提高开发效率、精选快捷键、内置截图快捷键
【MacOS 系列】mac常用快捷键收集,包含提高开发效率、精选快捷键、内置截图快捷键
431 0
|
6月前
|
Web App开发 安全 iOS开发
基于PyCharm与Mac系统的Chrome历史记录清理工具开发实战
《基于PyCharm与Mac系统的Chrome历史记录清理工具开发实战》详细解析了如何在macOS下通过Python脚本自动化清理Chrome浏览器的历史记录。文章以`clear_chrome_history.py`为例,结合PyCharm开发环境,深入讲解技术实现。内容涵盖进程检测、文件清理、虚拟环境配置及断点调试技巧,并提供安全增强与跨平台适配建议。该工具不仅保障个人隐私,还适用于自动化运维场景,具备较高实用价值。
125 0
|
10月前
「Mac畅玩鸿蒙与硬件46」UI互动应用篇23 - 自定义天气预报组件
本篇将带你实现一个自定义天气预报组件。用户可以通过选择不同城市来获取相应的天气信息,页面会显示当前城市的天气图标、温度及天气描述。这一功能适合用于动态展示天气信息的小型应用。
395 38
「Mac畅玩鸿蒙与硬件46」UI互动应用篇23 - 自定义天气预报组件
|
11月前
|
UED
「Mac畅玩鸿蒙与硬件31」UI互动应用篇8 - 自定义评分星级组件
本篇将带你实现一个自定义评分星级组件,用户可以通过点击星星进行评分,并实时显示评分结果。为了让界面更具吸引力,我们还将添加一只小猫图片作为评分的背景装饰。
241 6
「Mac畅玩鸿蒙与硬件31」UI互动应用篇8 - 自定义评分星级组件
|
11月前
|
前端开发 开发者
「Mac畅玩鸿蒙与硬件23」鸿蒙UI组件篇13 - 自定义组件的创建与使用
自定义组件可以帮助开发者实现复用性强、逻辑清晰的界面模块。通过自定义组件,鸿蒙应用能够提高代码的可维护性,并简化复杂布局的构建。本篇将介绍如何创建自定义组件,如何向组件传递数据,以及如何在不同页面间复用这些组件。
245 5
「Mac畅玩鸿蒙与硬件23」鸿蒙UI组件篇13 - 自定义组件的创建与使用
|
iOS开发 Python
mac:python安装路径,带你全面解析Python框架体系架构view篇
mac:python安装路径,带你全面解析Python框架体系架构view篇
|
XML Android开发 数据格式
Android 自定义View 之 Mac地址输入框(下)
Android 自定义View 之 Mac地址输入框(下)
136 0
|
XML Java Android开发
Android 自定义View 之 Mac地址输入框(上)
Android 自定义View 之 Mac地址输入框(上)
190 0
|
小程序 IDE 前端开发
mac开发必备软件
作为一名不资深开发工程师,用对工具可以节省我们大量的时间用来摸鱼,比如我的这篇文章就是在摸鱼的时候写的,在使用mac的过程中我下载过大量的软件,最终经过时间的洗礼留下了一些比较优秀的软件推荐给大家,如果你也有宝藏软件欢迎推荐!