美文网首页mac开发
MAC 开发和IOS开发不同之处(纯代码)

MAC 开发和IOS开发不同之处(纯代码)

作者: 灰斗儿 | 来源:发表于2018-06-21 11:47 被阅读44次
    坐标系不同

    IOS 零点在左上角
    mac 零点在左下角

    viewcontroller 初始化不同

    IOS alloc init 会自动创建空view
    mac alloc init不会主动创建,需重写-(void)loadview方法,否则会报nib找不到的错误

    - (void)loadView{
        //NSMakeRect(0, 0, 250, 150)
        NSRect frame = [[[NSApplication sharedApplication] mainWindow] frame];
        self.view = [[NSView alloc] initWithFrame:frame];
    }
    
    tableview,collectionview 使用方式不同

    IOS 两者可单独使用
    MAC 需配合NSScrollView 使用

    _tableContainerView = [[NSScrollView alloc] initWithFrame:CGRectMake(0, 0, 100, self.view.frame.size.height)];
    [_tableContainerView setDocumentView:_tableview];
    [self.view addSubview:_tableContainerView];
    

    注意NSCollectionView 选中 item 的代理方法 didSelectItemsAtIndexPaths 默认不会被调用,需要开启可选中属性

    [_collectionView setSelectable:true];
    

    tableview在IOS下只有一列,在mac下增加了一个NSTableColumn类,也就是一个table可以包含多列

        NSTableColumn * column = [[NSTableColumn alloc]initWithIdentifier:@"test"];
        column.title = @"分类";
        self.tableview = [[NSTableView alloc] initWithFrame:NSMakeRect(0, 0, 300, 100)];
        [self.tableview addTableColumn:column];
        [self.tableview setDraggingDestinationFeedbackStyle:NSTableViewDraggingDestinationFeedbackStyleGap];
        self.tableview.delegate = self;
        self.tableview.dataSource = self;
    
    
    UILabel 在Mac下不存在

    Mac 使用NSTextField代替,设置为不可以编辑,不可选中

    NSTextField *vi = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 100)];
    [vi setStringValue:@"xxxx"];
    vi.editable = false;
    vi.bezeled = NO;
    vi.selectable = NO;
    
    NSIndexPath 区别

    IOS: row = indexPath.row ,column = indexPath.column
    Mac:row = indexPath.item, column = indexPath.section

    背景色问题

    MAC有些对象 没有 backgroundColor 属性,可通layer 设置,
    记得设置 wantsLayer = YES

        self.view.wantsLayer = YES;
        self.view.layer.backgroundColor = [[NSColor redColor] CGColor];
    

    如果背景色依然没有变化,设置 drawsBackground = YES;

    button 字体颜色

    Mac NSButton 没有textcolor属性

    NSMutableAttributedString *colorTitle = [[NSMutableAttributedString alloc] initWithAttributedString:[button attributedTitle]];
    NSRange titleRange = NSMakeRange(0, [colorTitle length]);
    [colorTitle addAttribute:NSForegroundColorAttributeName value:color range:titleRange];
    [button setAttributedTitle:colorTitle];
    
    NSWindow 关闭窗口,dock恢复
    - (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)flag{
        if(!flag)
        {
            [NSApp activateIgnoringOtherApps:NO];
            [self.window makeKeyAndOrderFront:self];
        }
        return YES;
    }
    

    如果dock恢复是,崩溃,是因为window在关闭的时候被释放了,修改如下

    [self.window setReleasedWhenClosed:NO];
    

    持续更新中

    相关文章

      网友评论

        本文标题:MAC 开发和IOS开发不同之处(纯代码)

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