六月 14, 2010
在主窗口界面上添加“切换置顶”的按钮,并让它与系统状态菜单,偏好设置里面的控件三者之间同步更新。
这个按钮的类型为Toggle,同步时,通过程序修改它的状态即可。
Filed under:
未分类 由 cool8jay
六月 4, 2010
为程序添加自动升级功能,使用框架为Sparkle。
几点要注意的地方:
- appcast.xml文件可以与程序代码放在一起交由SVN管理,避免了再找虚拟空间存放文件的麻烦。但以后每次发布,都需要更新这个文件。这不是最完美的方案,因为程序打包的时候也会把这个多余的文件打进去,但对程序本身并无影响,程序升级依赖的是Info.plist中SUFeedURL所设的URL。
- 如果appcast.xml是放在google code上的,注意在项目Info.plist中,SUFeedURL的值必须是appcast.xml在google code上raw filed的地址(只能看到xml内容的那个URL)。
- 在把Sparkle框架加入SVN的时候,可以删掉不需要的语言包,以减少程序大小。
Filed under:
iSpeLL 由 cool8jay
六月 1, 2010
给设置面板添加多视图,在切换视图的时候使用动画。代码参考开源项目Sequel pro。
效果如下:
preferencesmov
Filed under:
iSpeLL 由 cool8jay
五月 31, 2010
给程序添加开机启动功能。参考。
如果同时打开System Preferences当前帐户的Login Items,可以看到启动列表里面会动态增加或减少iSpeLL这一项。
而且在一台电脑多帐户情况下,可以针对不同帐户开启或关闭这个选项。
Filed under:
iSpeLL 由 cool8jay
五月 24, 2010
使用User Defaults保存一个bool值,决定是否显示mouseover提示框信息。
Filed under:
iSpeLL 由 cool8jay
五月 23, 2010
窗口移动后,mouseover的提示框也应该重新生成,需要解决窗口坐标到屏幕作标转换问题。参考。
调试mouseover弹出信息时,犯了一个低级错误,如下:
NSPoint buttonPoint = NSMakePoint(NSMidX([self frame]),NSMidY([self frame]));
NSLog(@"%d, %d",buttonPoint.x, buttonPoint.y);
x和y的类型是CGFloat,即float,所以不能用%d去表示。上面的参考不仅帮我解决了坐标点问题,也解决了NSLog格式问题。
Filed under:
iSpeLL 由 cool8jay
五月 22, 2010
使用MAAttachedWIndow给搜索框添加MouseOver提示。参考。
- 研究MAAttachedWIndow使用方法。
- 研究MouseOver的实现方式,实现以下两个方法即可。
- (void)mouseEntered:(NSEvent *)theEvent
- (void)mouseExited:(NSEvent *)theEvent
以及在- (void)awakeFromNib中添加
- (void)awakeFromNib{
[self addTrackingRect:[self bounds]
owner:self
userData:nil
assumeInside:YES];
}
- 要让界面控件响应鼠标移动(是mousemove,不是mouseover)事件,必须调用下面代码:
[[self window] setAcceptsMouseMovedEvents:YES];
因为默认情况下窗口是不接收鼠标事件的,这是为性能考虑,毕竟默认情况下,并不是所有的窗口都有必要去关心这个鼠标事件。
不要把这个与mouseover混淆了。
- 还要注意的是,如果在Interface Builder里面有了自定义的NSView子类了,它的下面这个方法是不会被调用的。参考一。参考二。
- (id)initWithFrame:(NSRect)frame
Filed under:
iSpeLL 由 cool8jay