删除Main.Storyboard
,纯代码开发
如果想纯代码开发Mac应用,删除Main.Storyboard
,用代码构建初始化窗口,步骤如下:
1、删除Main.Storyboard
,修改info.plist
2、修改main.m
中代码如下:
1 |
|
3、修改AppDelegate.m
中代码如下:
1 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { |
这里要注意DMRootViewController
中再没使用nib的情况下,要通过实现loadView
来加载Controller
中的View
给NSView设置背景颜色
NSView
没有backgroudColor
这个属性,要设置背景色要通过layer来设置,并且要开开启wantsLayer
这个属性,代码如下:
1 | self.view.wantsLayer = YES; |
给NSScrollView设置背景颜色
NSScrollView
有backgroundColor
这个属性,可以通过设置这个属性和drawsBackground
来设置NSScrollView
的背景颜色,drawsBackground
不设置的话也是无法显示背景颜色的1
2
3
4
5
6_scrollView.backgroundColor = [NSColor redColor];
_scrollView.drawsBackground = YES;
//clear color 要设置为NO
_scrollView.backgroundColor = [NSColor clearColor];
_scrollView.drawsBackground = NO;
给NSCollectionView设置透明背景
1 | [_collectionView setBackgroundColors:@[[NSColor clearColor]]]; |
访问网络
Mac应用要想访问网络,必须要手动配置一下才可以,配置如图:
勾选上Outgoing Connections(tClien)
就可以访问网络了,如有想要使用摄像头、麦克风等硬件设备,那么可以勾选上Camera
、Microphone
等配置项
window被close后,点击Dock
重新显示出来
当你的界面被关闭后,想点击Dock
重新显示(类似QQ、微信的效果),可以分两种情况实现:
1、使用Main.Storyboard
的情况
实现AppDelegate
中的方法,如下:
1 | -(BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag |
2、使用纯代码的情况
1 | -(BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag |
如果想点击x
直接退出程序,可以通过实现NSWindowDelegate
的代理来处理
1 | - (BOOL)windowShouldClose:(NSWindow *)sender |
NSView的动画
要实现NSView从底部出现的动画,要注意必须设置两个神奇属性,否则根本没有动画效果:
1 | self.oneView = [[CustomView alloc] init]; |
其中NSView
的wantsLayer
和 NSAnimationContext
的allowsImplicitAnimation
这两个属性是必须要设置的!
设置阴影+圆角
1 | //设置阴影和圆角 |