首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Jekyll-Admin-Mac 开发纪要-左侧菜单栏

我们设置刚才新建的 NSView继承我们新建的类 SideMenuView。 使用 Xib 加载试图 到这里,我们新建的 NSView无法正常的显示出来。...那是因为我们在 XIB进行初始化的时候走的是方法是 public init?(coder: NSCoder) 并且 SideMenuView这个类不知道从哪里加载试图。...设置 Xib的 File's Owner类为 SideMenuView,绑定 view。 我们在 SideMenuView类里面新增一个方法,用来加载自定义的试图。...我们按照上文所描述的方法创建一个 Xib文件。 我们设置 Xib里面的 NSView的宽度为 205,高度为 49。其实我们这个宽度和高度会随着改变的。...我们按照之前写 SideMenuView试图的方法把 Xib的对象加载进来,具体的方法可以参考上面。 我们设置 View的试图按照宽度和高度自动约束。

2.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    macOS AppKit 的事件响应简介

    实例对象有三个组件:事件消息(鼠标,键盘,触控板等产生的),动作消息(action message: 比如NSButton 执行target 的action 方法,就属于一种action消息),和响应链条...,然后挂接到macOS系统的窗口服务(接收事件)和显示服务(显示内容)中....鼠标(或触控板)事件派发路径 前面已经提到过,一个NSWindow对象使用sendEvent:方法将鼠标事件派发给用户操作的视图(NSView)对象.那么NSWindow是怎样识别是哪个NSView在被用户操作呢...key Window窗口中的一个(NSButton)按钮时,这个点击动作仅仅是将这个窗口(NSWindow)对象变成key Window而已,你还需要使用鼠标再次点击这个按钮,此时这个按钮才会接收到鼠标点击的事件....这些交互的控件顺序你可以通过(Xcode中的)Interface Builder来构建也可以通过代码来控制(使用NSView的 setNextKeyView: 和 nextKeyView 方法) 关于控制键的更详细内容

    2.7K60

    怎么让继承的类直接使用XIB的布局试图

    自己几乎所有的项目都是用的全代码,但是平时demo和一些小工具还是用上可视化试图和最新语言Swift. 做到是一个mac程序,几个界面基本上的功能按钮都是一样的。就封装了一个类,用上了xib。...但是拖拽一个NSView,继承与我们刚才的自定义试图,运行发现出不来我们XIB界面。 我自己分析了一下原因,虽然我们让XIB的类指向我们自己自定义试图,但是关联不起来试图。...应该没有加载,我最初想到的解决在 override init(frame frameRect: NSRect) required init?...(coder: NSCoder) 这两个方法里面读取Nib里面的试图获取到设置为自定义试图的大小。 最后对于Xib这一块不是很熟悉就没走通,后来经过搜索,解决了我的问题。...新增一个方法来加载自定义试图 func loadNibView() { Bundle.main.loadNibNamed("OToolBarView", owner: self, topLevelObjects

    1.1K20

    神经病院 Objective-C Runtime 出院第三天——如何正确使用 Runtime

    +load会在类初始加载时调用, +initialize方法是以懒加载的方式被调用的,如果程序一直没有给某个类或它的子类发送消息,那么这个类的 +initialize方法是永远不会被调用的。...当调用NSButton的setFrame:方法,会去调用swizzled method,然后会跳入NSView类里面定义的setFrame:方法。...NSControl 和 NSView对应的swizzled method不会被调用。 NSButton 和 NSControl各自调用各自的 swizzling方法,相互不会影响。...NSControl的swizzling会去拉取NSView替换后的方法。相应的,NSControl在NSButton前面,NSButton也会去拉取到NSControl替换后的方法。这样就十分混乱了。...load方法能保证父类会在其任何子类加载方法之前,加载相应的方法。这就保证了我们调用顺序的正确性。

    1.4K20

    《iOS UI 开发捷径 利用 Interface Builder 高效、优雅地开发 UI》 读书笔记第1章 Interface Bundle 概要第2章 使用 Interface Builder第3

    方式加载 通过 UINib 方式加载 使用与UIView子类源文件关联的xib Bundle - (NSArray *)loadNibNamed:(NSString *)name...} } } IB 文件的加载过程 Bundle 和 UINib 将 nib 加载到内存 解固化并实例化 nib 文件里对应的对象 建立 connections (outlet、action) 调用...awakeFromNib() 方法 将 nib 中可见的控件显示出来 本地化 两种策略 App 本地化跟随系统语言 App 内部有一个可以设置语言的选项 本地化介绍 Base 文本的本地化 利用 NSLocalizedString...IB 中,但是源文件必须是 UIView 或者 NSView 的子类。...prepareForInterfaceBuild() 只需要将实时渲染的代码放到 prepareForInterfaceBuild() 方法中就可以了,该方法并不会在程序运行时调用。

    2.5K80

    一步一步,开始上手Mac 开发(一)

    使用initWithNibName:方法从nib(就是我们创建控制器时的Xib)文件中创建了一个新的view Controller。 2..../.m , MasterViewController.h/.m/.xib 和 MainMenu.xib)直接拖动到这个新组中 同样的方法,我们在ScrayBugsMac组中再创建一个Model组,用来放置后面需要用到的数据模型...创建ScaryBugData后的工程 1.16 为ScrayBugData编写代码,添加两个属性:title和rating 以及一个便捷初始化方法 ?...通常情况下,table view的数据源和代理都是控制器),这一步可以通过代码设置,也可以在xib图形界面中设置: ?...实现table view 的数据源和代理方法 1.24 点击运行,如果设置都正确的话,你将看到一个带有图片和文字的table view: ?

    4.1K40

    一步一步,开始上手Mac 开发(二)

    2.2 选中MasterViewController.xib 选中view,然后把它拖动的更宽更高,不必在意具体的尺寸细节,要能够放下新的控件就可以。 ?...添加控件后的view 2.4 设置EDStarRating控件,并修改label的文字 上一步里的Custom View是NSView类型,我们需要把它指定为EDStarRating 然后我们把第一个...MasterViewController.m中的代码实现 在Mac OSX10.10 之前,初始化view的代码需要写在控制器的loadView方法中,现在编译运行,随意点选table view 中的某一行...Change picture 按钮事件处理 在按钮响应的方法里,我们使用了一个新的控件类:IKPictureTaker,这个控件可以让你从电脑中选取图片或者从摄像头拍照,当用完成图片选择时,IKPictuerTaker...添加Quartz.framework 经过上面的设置,现在运行程序,如果没有出错,你就可以得到一个可以进行图片替换啦 关于本篇的代码,可以从github上下载demo code 到这里大家已经算初步入门了

    81720

    iOS基础问答面试题连载(二)-附答案

    把当前窗口设置成应用程序的主窗口 8.如何从从StoryBoard加载控制器? 加载指定的storyBoard 加载箭头所指向的控制器....如果没有跟它相同名称的Xib,那么它就会再去加载跟它相同名称去点Controller的名字的Xib....控制器调用loadView方法创建控制器的view.它的默认做法是: 先去判断当前控制器是不是从StoryBoard当中加载的,如果是,那么它就会从StoryBoard当中加载控制器的View....如果不是从StoryBoard当中加载的, 那么它还会判断是不是从Xib当中创建的控制器.如果是,那么它就会从xib加载控制器的View....如果也不是从Xib加载的控制器.那么它就会创建一个空的UIView.设为当前控制器的View. 注意点: 一旦重写了loadView,表示需要自己创建控制器的View.

    1.4K90

    【IOS开发基础系列】Storyboard专题

    那么,在没有 MainWindow.xib 文件的情况下,故事板是怎样被加载到app中的呢?         ...nib file base name 的键,它会导致UIApplication去加载 MainWindow.xib 并将之连接到 app 中。...在以前,如果你要定制表视图单元格,你要么在代码中向cell对象添加自己的 subviews ,要么新建一个 nib 然后从nib 中加载你自己的 cell。...如果是使用IB ,在 MainWindow.xib中会有应用程序委托的一个引用,同时你可以将顶层的ViewController 连接到应用程序委托的IBOutlet 属性。但现在使用故事板就不可能了。...3 设计原则 3.1 布局设计原则 3.1.1 一个控件的布局尽量只采用一种方式,要么是Storyboard(XIB)要么是代码         因为视图在刷新时,会直接从Storyboard中加载控件的大小

    1.3K30

    macOS APP从零到上架

    这里的Window指的是左上角有扩大缩小关闭按钮的窗口。 通过Main.storybord的箭头导向,指向的是主Window,然后将第一个页面指向为ViewController。...我们一般在ViewController内管理我们自己的View 可以通过代码的方式自定义WindowController和ViewController - (void)applicationDidFinishLaunching...,如果MainViewController的初始化不是通过☑️Xib来初始化,会报错: -[NSNib _initWithNibNamed:bundle:options:] could not load...在代码中,我们不能使用这样的命令来获取,因为xcrun实际上相当于是快捷方式,必现找到xcode路径,找到simctl的实际path NSTask *task = [NSTask new...,被拒了两次,第一次是因为上架的APP必须是沙盒App,所以在项目内要添加沙盒相关配置 另外一个原因,是因为macOS从mojava版本后,有了深色模式,所以状态栏必须要有深色模式的图标 将以上问题处理完毕后顺利上架

    83020

    程序启动的完整过程

    没有强引用窗口 没设置窗口的尺寸 控制器没加到窗口中或者设为跟控制器 在- didFinishLaunchingWithOptions:方法中代码加载storyboard的控制器 // 1.创建窗口...]; 在- didFinishLaunchingWithOptions:方法中代码加载xib的控制器 // 1.创建窗口 self.window = [[UIWindow alloc]...xib文件的顺序 若加载xib文件传入name参数,则按参数描述的加载 若未传入参数 先加载与控制器名字的View.xib 若控制器命名为YLViewController,则首先加载YLView.xib...而后加载与控制名字一样的xib 若控制器命名为YLViewController,则首先加载YLViewContrller.xib 若都找不到则加载空。...创建控制器View的顺序 优先layoutView代码创建 storyboard创建 xib创建 ?

    1.5K150
    领券