objective-c - (Mac) 面板大小调整问题

标签 objective-c cocoa macos interface-builder

我为 Mac 创建了一个应用程序,它使用链接到 toggleCollapse 按钮的水平调整大小 View (技术上是 BWToolkit 调整大小 View )。折叠和展开面板几次后,会发生这种情况(见图片)右 TableView 应与面板分隔线齐平。任何人都知道为什么会这样。我已经仔细调整了我的对齐方式和 anchor 以使其正确,但似乎这是一个奇怪的问题,导致 View 出现错误?

Table should be flush with panel divider..

编辑:有人没有遇到这个问题吗?任何输入都会有所帮助!也许我只需要重新开始?

最佳答案

这是 BWSplitView 本身的一个已知错误,与 View 动画和计时器在该 View 中的交互方式有关。此处介绍了详细信息:

http://bwalkin.lighthouseapp.com/projects/36323/tickets/34-split-view-doesnt-resize-subview-properly-during-a-toggle-uncollapse-after-manual-collapse

基本上,在 View 动画之前,autoresizesSubviews 是未设置的,这样 View 可以折叠/展开而不影响内容;然后安排一个计时器在动画完成时恢复 autoresizesSubviews 属性。但是(当然)动画有时可能比预定的计时器触发稍微早或晚完成;因此在动画完成之前打开自动调整大小,导致几个像素调整大小。您可能已经看到,随着 View 折叠和展开, subview 往往会稍微移动。

对此的“完整”修复是在 CAAnimation 使用回调完成时恢复自动调整大小,但这尚未实现。然而,在该线程中,“Robert Payne”发布了一个版本的 BWSplitView.m,它使用了一种稍微不同的方法—— View 大小在折叠前记录,并在展开后恢复。我自己应用了这个补丁(我认为它一开始不会编译 - 但这是一个未声明变量的简单问题?)并且可以确认它确实解决了问题。

如果您想要成功编译的 BWSplitView.m 或已编译框架的副本,请告诉我。

关于objective-c - (Mac) 面板大小调整问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4882683/

相关文章:

objective-c - 如何在 xcode 中随机播放存储在数组中的图像而不重复

objective-c - 如何围绕任意点旋转对象?

objective-c - 如何将 AppleScript 菜单添加到我的菜单栏?

cocoa - 带有静态图像的弹出按钮(Cocoa OSX)

iphone - 我可以在不通过 NSEntityDescription 的情况下创建自定义托管对象类的新实例吗?

ios - 使用 3G 连接时出现奇怪的错误?

iphone - 如何正确释放带有 NSMutableArray 成员且内部有 NSNumber 对象的对象的 NSMutableArray?

cocoa - 在早期开发过程中,当数据丢失是预期且可接受的时,可轻松进行核心数据迁移

objective-c - 指定图标的路径

macos - 如何绑定(bind)80非root