美文网首页Mac OS开发mac开发Mac App
第一个Mac OS X项目(纯代码)

第一个Mac OS X项目(纯代码)

作者: 灰斗儿 | 来源:发表于2018-06-19 13:47 被阅读216次

    本文作为快速创建项目入门,细节不做阐述,请自行探索

    Mac OS X 的坐标系不同于IOS
    IOS 原点在屏幕左上角
    Mac OS X 原点在左下角

    Mac alloc init 一个viewcontroll 不会自动创建view
    IOS 会自动创建view
    所以Mac OS 的 ViewController
    都需要实现loadView 方法
    初始化view

    创建项目

    启动 Xcode
    选择 创建新项目
    顶部 选择macOS
    Application 下 选择 cooca App

    屏幕快照 2018-06-19 下午12.54.41.png

    点击next
    取消勾选Use Storyboards


    屏幕快照 2018-06-19 下午12.55.13.png

    点击next

    既然是纯代码开发
    那么移除目录中所有.xib文件
    也就是把所有.xib结尾的都删掉
    同时info.plist 移除对应的key

    屏幕快照 2018-06-19 下午1.43.07.png

    完成项目创建

    编写代码

    编辑main.m

    #import <Cocoa/Cocoa.h>
    #import "AppDelegate.h"
    int main(int argc, const char * argv[]) {
        
        NSApplication *app = [NSApplication sharedApplication];
        id delegate = [[AppDelegate alloc] init];
        app.delegate = delegate;
        return NSApplicationMain(argc, argv);
    }
    

    编辑appDelegate.m

    #import "AppDelegate.h"
    
    @interface AppDelegate ()
    
    @property (nonatomic, strong) NSWindow *window;
    @end
    
    @implementation AppDelegate
    
    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
        // Insert code here to initialize your application
        
        //窗口 关闭,缩小,放大等功能,根据需求自行组合
        NSUInteger style =  NSWindowStyleMaskTitled | NSWindowStyleMaskClosable |NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable;
        float w = [[NSScreen mainScreen] frame].size.width/2;
        float h = [[NSScreen mainScreen] frame].size.height/2;
        self.window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, w, h) styleMask:style backing:NSBackingStoreBuffered defer:YES];
        self.window.title = @"hello";
        [self.window makeKeyAndOrderFront:self];
        [self.window center];
    }
    
    
    - (void)applicationWillTerminate:(NSNotification *)aNotification {
        // Insert code here to tear down your application
    }
    
    
    @end
    
    
    

    创建第一个ViewController
    快捷键commad+n


    屏幕快照 2018-06-19 下午1.06.55.png 屏幕快照 2018-06-19 下午1.07.28.png

    编辑HomeViewController

    #import "HomeViewController.h"
    
    @interface HomeViewController ()
    
    @end
    
    @implementation HomeViewController
    - (void)loadView{
        NSRect frame = [[[NSApplication sharedApplication] mainWindow] frame];
        self.view = [[NSView alloc] initWithFrame:frame];
    }
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do view setup here.
        //do like ios
        NSButton *button = [[NSButton alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
        [button setTitle:@"button"];
        [self.view addSubview:button];
    }
    
    @end
    

    再次编辑appdelete.m

    #import "AppDelegate.h"
    #import "HomeViewController.h"
    @interface AppDelegate ()
    
    @property (nonatomic, strong) NSWindow *window;
    @property (nonatomic, strong) HomeViewController *homeVC;
    @end
    
    @implementation AppDelegate
    
    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
        // Insert code here to initialize your application
        //
        NSUInteger style =  NSWindowStyleMaskTitled | NSWindowStyleMaskClosable |NSWindowStyleMaskMiniaturizable | NSWindowStyleMaskResizable;
        float w = [[NSScreen mainScreen] frame].size.width/2;
        float h = [[NSScreen mainScreen] frame].size.height/2;
        self.window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, w, h) styleMask:style backing:NSBackingStoreBuffered defer:YES];
        self.window.title = @"hello";
        
        [self.window makeKeyAndOrderFront:nil];
        [self.window center];
        
        self.homeVC = [[HomeViewController alloc] init];
        [self.window setContentViewController:self.homeVC];
        
    }
    
    
    - (void)applicationWillTerminate:(NSNotification *)aNotification {
        // Insert code here to tear down your application
    }
    
    
    @end
    

    运行一下,看看效果吧
    更多功能自行探索
    你会成长很多

    相关文章

      网友评论

      • 心语风尚:为什么 NSWondowController没有创建 是做什么用啊 不要NSWondowController有什么影响
        心语风尚:@autorelease 我没有用NSWondowController 实例化了NSWindow 创建了NSViewController 都是纯代码 NSViewController中创建了NSTableView 还填充了数据 都没问题 ???
        灰斗儿:就像uiview 和和uiviewcontroller的关系是一样的,不创建 NSWondowController不会有什么影响
        灰斗儿:就像IOS中 ,必须有UIWindow一样

      本文标题:第一个Mac OS X项目(纯代码)

      本文链接:https://www.haomeiwen.com/subject/shsaeftx.html