Mac程序的開發(fā),基本上就是比iOS上更原始的版本,很凌亂,另外就是窗口什么的區(qū)別最大
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、太子河ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的太子河網(wǎng)站制作公司
以下是我之前記得筆記,在Xcode里寫的,不太好看。。。
//
// ViewController.m
// mac
//
// Created by 國棟 on 16/1/4.
// Copyright (c) 2016年 GD. All rights reserved.
//
#import "ViewController.h"
@implementation ViewController
#pragma mark 編寫Mac程序和iOS程序主要的不同
- (void)viewDidLoad {
[super viewDidLoad];
#pragma mark 坐標(biāo)系不同
#pragma mark 缺少一些組合方法
//iOS是在OS X系統(tǒng)的基礎(chǔ)上開發(fā)的,所以有很多更方便的地方,但Mac的框架不提供!
//比如,iOS中有一些常用的方法,Mac中沒有,比如
//iOS中UIButton 有addTarget:#(id)# action:#(SEL)#
forControlEvents:#(UIControlEvents)#方法,但NSButton只能一項(xiàng)的設(shè)置
/**如果Mac里沒有某個(gè)組合的方法,可以試試拆開用!**/
NSButton *button=[[NSButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
button.target=self;
button.action=@selector(click);
[self.view addSubview:button];
#pragma mark 沒有Label控件
//Label控件是用TextFiled實(shí)現(xiàn)的
//label.enabled=NO;
//label.bordered=NO;
//label.selectable=YES;
#pragma mark 沒有bounds,center
#pragma mark NSView沒有背景顏色,但NSClipView和其它有些控件有
[self.view setWantsLayer:YES];
[self.view.layer setBackgroundColor:[NSColor blueColor].CGColor];
#pragma mark imagename方法只適用于圖片文件在包里
//根據(jù)路徑獲取圖片[[NSImage alloc]initByReferencingFile:@"/Users/guodong/Desktop/Coding/mac/mac/636b17fb1f.png"];
#pragma mark ImageView可以設(shè)定animates editable屬性
//可以播放動(dòng)圖,可以刪除,可以拖放圖片上去
#pragma mark NSColorWell enable=yes 可以調(diào)色
#pragma mark NSScrollView默認(rèn)不接受鼠標(biāo)事件,用sv.contentView.frame調(diào)整內(nèi)容視圖的位置和大小
#pragma mark NSWindow
//Mac程序是可以有多個(gè)window的!
//設(shè)置當(dāng)前的主窗口
NSApplication *app=[NSApplication sharedApplication];//獲取程序?qū)ο?/p>
NSLog(@"%@",app.keyWindow);//keyWindow和mainWindow經(jīng)常是同一個(gè)window,它們?cè)诔绦騽偧虞d的時(shí)
候是還沒加載的,所以不能在viewDidLoad方法中設(shè)置!當(dāng)app處于不活動(dòng)的狀態(tài)或不能接受鍵盤值時(shí),也可能是空的
NSLog(@"%@",app.mainWindow);
NSWindow *window=app.keyWindow;
window.alphaValue=1;//設(shè)置窗口的透明度
window.backgroundColor=[NSColor clearColor];//設(shè)置背景顏色為透明
[window setStyleMask:1];//設(shè)置窗口的風(fēng)格是沒有邊框的,也可以在故事板中的窗口屬性中調(diào)
[window setFrame:CGRectMake(100, 100, 500, 500) display:YES animate:YES];//移動(dòng)窗口,立即刷新,動(dòng)畫效果
//創(chuàng)建一個(gè)新的窗口,注意窗口控制器應(yīng)當(dāng)是個(gè)全局的指針,否則窗口會(huì)立即被銷毀!
NSWindow *new=[[NSWindow alloc]initWithContentRect:CGRectMake(100,
100, 300, 300) styleMask:1 backing:NSBackingStoreRetained defer:NO];
new.backgroundColor=[NSColor redColor];
NSWindowController *wc=[[NSWindowController alloc]initWithWindow:new];
[wc showWindow:new];
[new setLevel:10];//設(shè)置窗口顯示的優(yōu)先級(jí)
#pragma mark Mac開發(fā)中,cell十分常見
//大概是在OS X簡化為iOS的過程中,很多控件被合并,簡化了。
//OS X中很多控件都有(類型的后綴)為cell的子控件,通常能調(diào)整title什么的
//總之,大多數(shù)控件都是組合成的,而且子控件都暴露在外面,非常麻煩
#pragma mark NSOpenPanel 彈出選擇文件用的控件
NSOpenPanel *openPanel=[NSOpenPanel openPanel];//獲取NSOpenPanel對(duì)象
//設(shè)置
[openPanel setCanChooseFiles:YES];
[openPanel setCanChooseDirectories:YES];
//[openPanel setAllowedFileTypes:[NSArray arrayWithObject:(NSString *)kUTTypeDirectory]];
[openPanel setAllowedFileTypes:@[@"mp3"]];//允許的類型
[openPanel setDirectoryURL:[NSURL fileURLWithPath:@"/Users/guodong/Desktop/song"]];//設(shè)置默認(rèn)路徑
[openPanel setAllowsMultipleSelection:YES];//允許按住shift/command多選
[openPanel runModal];//顯示,并且返回結(jié)果 0取消了,1確認(rèn)了
if ([openPanel runModal] == NSModalResponseOK) {
NSURL *url = [openPanel URL];
NSLog(@"%@",[openPanel filenames]);
}
#pragma mark 打開文件/文件夾的操作
[[NSWorkspace sharedWorkspace]openFile:@"/Users/guodong/Desktop/Tools"];//用默認(rèn)的程序打開文件/文件夾
[[NSWorkspace sharedWorkspace]openFile:@"/Users/guodong/Desktop/首頁 - 知乎.html" withApplication:@"Xcode"];//用指定的程序打開
//NSWorkspace可以做一些設(shè)計(jì)到其他App的操作,比如獲取活動(dòng)的app列表,隱藏其他app等
[[NSDocumentController
sharedDocumentController]openDocument:@"/Users/guodong/Desktop/Tools"];
//NSDocument應(yīng)該是 蘋果提供的網(wǎng)絡(luò)同步功能用的 大概
#pragma mark NSTableView
//content Mode 這玩意在代碼中好像沒辦法設(shè)置 設(shè)置Cell-Base/View-Base (必須設(shè)置)
//純代碼創(chuàng)建Cell-Base NSTableView
NSTableView *tableView;
tableView=[[NSTableView alloc]initWithFrame:CGRectMake(0, 0, 400, 300)];
tableView.delegate=nil;//代理
tableView.dataSource=nil;
//[tableView setAutosaveName:@"downloadTableView"];
//[tableView setAutoresizesSubviews:FULLSIZE];
//[tableView setBackgroundColor:[NSColor whiteColor]];
//[tableView setGridColor:[NSColor lightGrayColor]];
//[tableView setGridStyleMask: NSTableViewSolidHorizontalGridLineMask];
//[tableView setUsesAlternatingRowBackgroundColors:YES];
//[tableView setAutosaveTableColumns:YES];
//[tableView setAllowsEmptySelection:YES];
//[tableView setAllowsColumnSelection:YES];
NSScrollView *scrollView=[[NSScrollView alloc]initWithFrame:CGRectMake(0, 0, 400, 300)];
[scrollView setDocumentView:tableView];//設(shè)置內(nèi)容視圖
//[scrollView addSubview:tableView];雖然也能添加上,但是不能滑動(dòng)什么的
//[scrollView setBackgroundColor:[NSColor redColor]];
[self.view addSubview:scrollView];
//設(shè)定表頭
NSTableHeaderView *tableHeadView=[[NSTableHeaderView alloc] initWithFrame:CGRectMake(0, 0, 300, 20)];
[tableView setHeaderView:tableHeadView];
//以前不知道的。。。設(shè)定列,可以設(shè)定幾列,而且可調(diào)
NSTableColumn *column=[[NSTableColumn alloc] initWithIdentifier:@"column"];
[[column headerCell] setStringValue:@"column"];
//[[column headerCell] setAlignment:NSCenterTextAlignment];
[column setWidth:400];
[column setMinWidth:50];
[column setEditable:YES];
//[column setResizingMask:NSTableColumnAutoresizingMask | NSTableColumnUserResizingMask];
[tableView addTableColumn:column];
// Do any additional setup after loading the view.
/*創(chuàng)建Cell-Base NSTableView用的
-(NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
{
return 100;
}
-(id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
return @"ecwve";
}
*/
/*創(chuàng)建View-Base NSTableView用的,用代碼可能不行。。。
-(CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row
{
NSLog(@"eww");
return 100;
}
-(NSView*)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
NSView *cellView=[[NSView alloc]initWithFrame:CGRectMake(0, 0, 100, 20)];
NSTextField *textField=[[NSTextField alloc]initWithFrame:CGRectMake(0, 0, 100, 20)];
[textField.cell setTitle:@"wcvc"];
[cellView addSubview:textField];
return cellView;
}
*/
// Do any additional setup after loading the view.
}
-(void)click
{
NSLog(@"click");
}
- (void)setRepresentedObject:(id)representedObject {
[super setRepresentedObject:representedObject];
// Update the view, if already loaded.
}
@end
iOS開發(fā)就是為裝有iOS系統(tǒng)的設(shè)備完成應(yīng)用軟件或游戲軟件的開發(fā),進(jìn)行iOS開發(fā)不一定非要用mac,也可以在Windows的環(huán)境下安裝一個(gè)mac虛擬機(jī),或者也可以使用黑蘋果。
蘋果IOS系統(tǒng)和Mac OS系統(tǒng)的區(qū)別為:構(gòu)架不同、適用不同、移植不同。
一、構(gòu)架不同
1、蘋果IOS系統(tǒng):蘋果IOS系統(tǒng)基于ARM構(gòu)架。
2、Mac OS系統(tǒng):Mac OS系統(tǒng)基于X86\X86-64構(gòu)架。
二、適用不同
1、蘋果IOS系統(tǒng):蘋果IOS系統(tǒng)適用蘋果手機(jī)和ipad,電腦并不適用。
2、Mac OS系統(tǒng):Mac OS系統(tǒng)是蘋果公司為Mac系列產(chǎn)品開發(fā)的專屬操作系統(tǒng)。
三、移植不同
1、蘋果IOS系統(tǒng):蘋果IOS系統(tǒng)不能移植Mac OS系統(tǒng)的軟件。
2、Mac OS系統(tǒng):Mac OS系統(tǒng)能移植蘋果IOS系統(tǒng)的軟件。