macOS开发之Cocoa开发
1. 主要介绍macOS平台下开发Cocoa界面程序, 使用AppKit,Cocoa框架等开发macOS的原生程序.
2. 工具使用Xcode,语言使用object-c,swift,C++
Peter(阿斯拉达)
关注系统界面开发技术,安全,语言特性,网络,图形,AI,硬件,并发,研发流程管理.
展开
-
[Cocoa]_[初级]_[macOS的App在深色模式下文字图标显示不正常的解决办法]
1. 升级到`macOS 10.15`后,安装了`xcode 10.1`,运行项目时发现软件界面上的部分文字看不到了,特别是那些标准控件。文字怎么不见了,怎么回事?原创 2024-06-15 17:17:18 · 364 阅读 · 0 评论 -
[macOS]_[Shell]_[获取App的签名证书有效期]
场景在进行 macOS开发时, 一般都需要对 app 进行签名,而我们发布产品后,测试如何查看app是否已经签名,证书是否正确,证书的有效期到哪天?我们右键app的Get Info并没有签名和证书信息。说明判断一个app是否签名可以通过codesign命令进行获取; 会输出签名的app信息,没有证书有效期和证书名称。codesign -dvvv /Applications/iTunes.appsign.sh获取一个app的签名证书,可以通过几条命令组合.以下内容另存位sign.sh之原创 2020-09-08 17:49:19 · 959 阅读 · 0 评论 -
[Cocoa]_[初级]_[NSNotificationCenter通知中心发布接收消息注意事项]
场景在 macOS 下进行 Cocoa 开发时,我们偶尔会需要监听窗口的大小改变的通知,以便能控制子窗口或者 NSView 改变大小. 比如 NSWindowDidResizeNotification 通知. 那么我们应该如何监听父窗口的大小改变通知?如果我们使用 NSNotificationCenter 进行 postNotificationName 消息, 这个消息发送到接受者是异...原创 2020-05-02 23:54:14 · 671 阅读 · 0 评论 -
[Windows-macOS]_[C/C++-Object-c]_[复制文本和图片到剪切板]
场景Windows,macOS开发界面时,往往需要复制界面上的文本内容到剪切板,或者需要把一个图片复制到剪切板,便于粘贴到QQ,微信里,怎么做到呢?说明无论时Windows还是macOS,都有相对应的复制文本到剪切板或者复杂图片到剪切板, 文本方面不用说,不会很复杂,复杂的地方就在于复制图片到剪切板上.Windows有需要存储BITMAP到图像格式,所以在保存前需要得到BITM...原创 2019-08-02 15:47:10 · 1399 阅读 · 0 评论 -
[Objc]_[获取Mac下的字体库支持的所有字体名称]
场景:1.假如你向做自己的字体管理界面时,这样就需要获取支持的所有字体名字。2.objc的强大之处是它可以和C++混合编程,这是其他语言所不具备的。这里使用了ATS Service接口文件1:test_fontdata.mm#include #include #include #import #include #include inline void Sto原创 2013-12-09 23:31:42 · 3095 阅读 · 0 评论 -
[设计模式]_[Object-c]_[观察者模式在项目中实际使用例子2]
场景在使用C/C++开发界面时,在两个界面通讯我们之前通过 观察者模式在项目中实际使用例子 来进行数据传输,而不是通过互相引用的方式进行数据传输,互相引用的最大缺点就是耦合严重。而在使用Object-c开发Cocoa界面时,也会出现这种情况,就是界面间如何通讯?Object-c只支持单继承,不支持多重继承,我们创建界面只能继承NSView,而不能再继承另外一个类,如何做?Obje...原创 2019-08-02 16:46:50 · 546 阅读 · 0 评论 -
[Cocoa]_[中级]_[表格里显示GIF动画问题]
场景在Cocoa开发时, 界面上需要显示动态的GIF动画, 可以试用NSImageView, 但是如果在NSTableView的某个单元格显示GIF动画, 如何做?NSTableView的某列如果使用NSImageCell时, 会有什么问题?说明在实验中, 如果NSTableView,内容模式是Cell Based只是在某时只有一行显示GIF动画, 使用NSImageCel...原创 2019-04-02 16:38:52 · 402 阅读 · 0 评论 -
[Cocoa]_[中级]_[在指定区域绘制文本的drawrect实现]
场景Cocoa开发时, 往往需要在某个区域绘制文本, 但是文本的长度不是固定的, 所以有可能很长的时候需要自动换行. NSTextField的[NSCell setWraps]可以做到, 但是如果不能添加NSTextField,只能通过绘制的方式?如何做.NSAttributeString的size只是单行的, 没什么用.宽度固定时, Windows开发时我们可以通过DT_CALCRE...原创 2019-04-02 16:01:18 · 539 阅读 · 0 评论 -
[Cocoa]_[初级]_[把NSImage图片转换为灰度图片]
场景在开发Cocoa程序时, 往往需要在禁用按钮时实现一些灰度的特效, 和Windows一样, 如何实现呢?NSImage有没有相关的方法呢? NSImage有一个颜色空间colorSpace的概念, 能通过转换为灰度实现吗?说明试用灰度空间(不行), 通过NSImage的方法representations获取到NSBitmapImageRep,之后在通过bitmapImag...原创 2019-04-02 15:28:30 · 872 阅读 · 0 评论 -
[Cocoa]_[初级]_[如何创建上下文菜单]
场景Cocoa开发的时候经常会遇到需要上下文菜单的情况, 当然这种菜单不是菜单栏里的菜单, 而是根据数据多少展现不同的子菜单。这就需要动态创建子菜单,问题是如何创建?如何绑定SEL, 如何加入子菜单标识,以便在点击后知道点击了那个菜单.菜单弹出, 之后呢?如何在指定位置弹出?比如一个按钮正下方,贴着按钮的底部.说明创建上下文菜单有3种方法:方法 1在 Interface B...原创 2019-04-02 15:05:21 · 492 阅读 · 0 评论 -
[Cocoa]_[初级]_[如何复制NSView]
场景:1. 一般我们使用ib设计器设计好一个NSView之后(通常用NSView组合多个控件), 需要复制一个NSView来重新布局显示.如果调用[view copy] 消息的话会抛异常.原创 2015-11-12 15:52:36 · 2009 阅读 · 0 评论 -
[Cocoa]_[初级]_[如何绘制带颜色的文本]
场景:1. 自定义view或其他控件时, 往往需要根据背景色或图片绘制特定颜色的文本.原创 2015-10-08 19:33:28 · 1826 阅读 · 1 评论 -
[C/C++]_[Object-C]_[数组排序比较]
场景在macOS下Objective-C的数组是如何排序的?C++的数组std::vector如何排序呢? C++和Objective-C的数组排序有什么不同呢?说明Objective-C的数组排序是以方法的形式来提供的,可以说很方便。而C++是以算法库来提供的, 不方便, 只能说优点就是效率高和内存利用率高. 因为C++的数组排序不会创建新数组.例子//// ma...原创 2019-09-16 16:17:05 · 915 阅读 · 1 评论 -
[Cocoa]_[初级]_[关于nib文件加载过程awakeFromNib]
场景在用xcode开发Cocoa程序时, 我们一般会使用IB来设计界面xib. 而在xib文件里我们往往会对用到的自定义NSView进行绑定以便引用使用. 但是这些xib里的object是什么时候进行实例化并可用的?有没有消息通知.有没有一个方法在xib界面对象加载完, 绑定完,在显示界面前能通知一下呢?答案是有的.说明xib文件在打包进入.app之后会编译为二进制格式的nib...原创 2019-09-12 15:31:06 · 937 阅读 · 0 评论 -
[Cocoa]_[初级]_[如何获取鼠标点击的坐标点]
场景Cocoa开发里我们使用NSButton按钮时如何判断鼠标点击了按钮的哪个坐标?如何根据点击按钮的坐标位置来响应不同的内容? 比如点击的是自定义按钮里的复选框?说明方案一: NSButton按钮有一个setAction来设置按钮响应的处理函数。这个函数是在NSView的mouseDown函数里调用的。这时候如果我们需要判断鼠标的点击坐标,常规做法就是在这个mouseDow...原创 2019-09-16 15:27:50 · 1275 阅读 · 0 评论