天天看點

【Cocoa(mac) Application 開發系列之二】總結一些常用控件及自定義View

上一篇已經對于xib與控件之間的關系都大緻介紹了;

那麼本篇不再詳細解釋如何如何連接配接控件以及控件代碼等,直接給出代碼以及需要注意的簡單介紹下,便于童鞋們使用時可以給與參考:

1. 首先建立一個MyView類,繼承NSView,如下:

<a href="http://blog.51cto.com/xiaominghimi/969970#">?</a>

1

2

3

4

5

6

7

8

9

10

11

12

<code>//</code>

<code>//  MyView.h</code>

<code>//  ManyControlTest</code>

<code>//  Created by Himi on 12-6-6.</code>

<code>//  Copyright (c) 2012年 Himi. All rights reserved.</code>

<code>#import &lt;Cocoa/Cocoa.h&gt;</code>

<code>@interface MyView : NSView</code>

<code>@end</code>

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

<code>//  MyView.m</code>

<code>#import "MyView.h"</code>

<code>@implementation MyView</code>

<code>- (id)initWithFrame:(NSRect)frame</code>

<code>{</code>

<code>    </code><code>self = [super initWithFrame:frame];</code>

<code>    </code><code>if</code> <code>(self) {</code>

<code>        </code><code>// Initialization code here.</code>

<code>    </code><code>}</code>

<code>    </code> 

<code>    </code><code>return</code> <code>self;</code>

<code>}</code>

<code>- (</code><code>void</code><code>)drawRect:(NSRect)dirtyRect</code>

<code>    </code><code>NSString * str =@</code><code>"MyView   --by Himi"</code><code>;</code>

<code>    </code><code>//屬性包裝設定</code>

<code>    </code><code>NSMutableDictionary *dic = [NSMutableDictionary dictionary];</code>

<code>    </code><code>//設定字型樣式</code>

<code>    </code><code>[dic setObject:[NSFont fontWithName:@</code><code>"Times"</code> <code>size:14] forKey:NSFontAttributeName];</code>

<code>    </code><code>//設定字型顔色</code>

<code>    </code><code>[dic setObject:[NSColor redColor] forKey:NSForegroundColorAttributeName];</code>

<code>    </code><code>//繪制</code>

<code>    </code><code>[str drawAtPoint:NSMakePoint(50, 50) withAttributes:dic];</code>

代碼很easy了解,不在贅述啦~

下面我們看一些基礎常用控件:

41

42

43

<code>//  AppDelegate.h</code>

<code>//  Created by Himi on 12-6-3.</code>

<code>@interface AppDelegate : NSObject &lt;NSApplicationDelegate,NSTabViewDelegate&gt;</code>

<code>    </code><code>IBOutlet NSTextField *nfCount;</code>

<code>    </code><code>IBOutlet NSView *view ;</code>

<code>    </code><code>IBOutlet NSButton *btn;</code>

<code>    </code><code>IBOutlet NSPopUpButton *popBtn;</code>

<code>    </code><code>IBOutlet NSSegmentedControl * nsc;</code>

<code>    </code><code>IBOutlet NSForm *nForm;</code>

<code>    </code><code>IBOutlet NSMatrix * ms;</code>

<code>    </code><code>IBOutlet NSStepper * nsp;</code>

<code>    </code><code>IBOutlet NSTabView *tbView;</code>

<code>    </code><code>IBOutlet NSColorWell * nsWell;</code>

<code>    </code><code>IBOutlet MyView * myView;</code>

<code>-(IBAction)btnPress:(id)sender;</code>

<code>@property (assign) IBOutlet NSWindow *window;</code>

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

<code>//  AppDelegate.m</code>

<code>#import "AppDelegate.h"</code>

<code>@implementation AppDelegate</code>

<code>@synthesize window = _window;</code>

<code>- (</code><code>void</code><code>)applicationDidFinishLaunching:(NSNotification *)aNotification</code>

<code>    </code><code>//------綁定Delegate</code>

<code>    </code><code>[tbView setDelegate:self];</code>

<code>-(IBAction)btnPress:(id)sender{</code>

<code>    </code><code>//------ 處理NSButton的</code>

<code>    </code><code>if</code><code>(btn == sender){</code>

<code>        </code><code>[myView setHidden:YES];</code>

<code>    </code><code>//------處理NSPopUpButton</code>

<code>    </code><code>if</code><code>(popBtn == sender){</code>

<code>        </code><code>NSLog(@</code><code>"%@"</code><code>,[popBtn itemTitleAtIndex:0]);</code>

<code>        </code><code>NSLog(@</code><code>"%@"</code><code>,[popBtn itemTitleAtIndex:1]);</code>

<code>        </code><code>NSLog(@</code><code>"%@"</code><code>,[popBtn itemTitleAtIndex:2]);</code>

<code>    </code><code>//------處理 NSSegmentedControl</code>

<code>    </code><code>if</code><code>(nsc ==sender){</code>

<code>        </code><code>NSLog(@</code><code>"%i"</code><code>,[nsc isSelectedForSegment:0]);</code>

<code>        </code><code>NSLog(@</code><code>"%i"</code><code>,[nsc isSelectedForSegment:1]);</code>

<code>        </code><code>NSLog(@</code><code>"%i"</code><code>,[nsc isSelectedForSegment:2]);</code>

<code>    </code><code>//------處理 NSForm</code>

<code>    </code><code>if</code><code>(nForm == sender){</code>

<code>        </code><code>NSLog(@</code><code>"NSForm Cell 1 is %@"</code><code>,[[nForm cellAtIndex:0] stringValue]);</code>

<code>        </code><code>NSLog(@</code><code>"NSForm Cell 2 is %@"</code><code>,[[nForm cellAtIndex:1] stringValue]);</code>

<code>        </code><code>NSLog(@</code><code>"NSForm Cell 3 is %@"</code><code>,[[nForm cellAtIndex:2] stringValue]);</code>

<code>    </code><code>//------處理NSMatrix</code>

<code>    </code><code>if</code><code>(ms == sender){</code>

<code>        </code><code>NSLog(@</code><code>"NSMatrix is Select = %@"</code><code>,[[ms selectedCell] title]);</code>

<code>    </code><code>//-----處理 NSStepper</code>

<code>    </code><code>if</code><code>(nsp == sender){</code>

<code>        </code> 

<code>        </code><code>NSString *string = [NSString stringWithFormat:@</code><code>"%i"</code><code>, (</code><code>int</code><code>)[nsp doubleValue]];</code>

<code>        </code><code>[nfCount setStringValue:string];</code>

<code>    </code><code>//-----處理 nsWell</code>

<code>    </code><code>if</code><code>(nsWell == sender){ </code>

<code>        </code><code>NSColor* color =  [nsWell color];</code>

<code>        </code><code>NSLog(@</code><code>"R=%f,G=%f,B=%f"</code><code>,[color greenComponent],[color redComponent],[color blueComponent]);</code>

<code>//------處理 tbView</code>

<code>//-(void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem{}</code>

<code>-(</code><code>void</code><code>)tabView:(NSTabView *)tabView willSelectTabViewItem:(NSTabViewItem *)tabViewItem{</code>

<code>    </code><code>if</code> <code>([tbView indexOfTabViewItem:tabViewItem] == 0) {</code>

<code>        </code><code>NSLog(@</code><code>"view 111"</code><code>);</code>

<code>    </code><code>}</code><code>else</code> <code>if</code> <code>([tbView indexOfTabViewItem:tabViewItem] == 1) {</code>

<code>        </code><code>NSLog(@</code><code>"view 222"</code><code>);</code>

運作截圖如下:

<a href="http://www.himigame.com/wp-content/uploads/2012/06/1232.png"></a>

本文轉自 xiaominghimi 51CTO部落格,原文連結:http://blog.51cto.com/xiaominghimi/969970,如需轉載請自行聯系原作者

繼續閱讀