首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSStackView / NSScrollView -平分的NSStackview子视图?

NSStackView / NSScrollView -平分的NSStackview子视图?
EN

Stack Overflow用户
提问于 2017-05-17 04:37:38
回答 2查看 293关注 0票数 0

这将很难解释。我正在修改苹果公司的InfoBarStackView示例代码。我遇到的问题是,似乎其中一个子视图被NSStackview一分为二,并分别呈现。

在我的示例中,我在堆栈视图中添加了4个子视图,每个子视图的大小(和代码)完全相同。然后将其放入NSScrollView中。(布局是垂直的。)

当应用程序运行时,我看到了前两个子视图。当我向下滚动时,怪异就开始了。随后的视图被渲染,其中底部被渲染,然后顶部被渲染。如果垂直大小为272像素,则底部渲染为256像素,顶部为余数(16)。向下滚动到最后一个视图会导致同样的问题。

以下是一些屏幕截图以供说明:

我有一个Xcode8的样例项目,我已经发布了Xcode8项目here,如果有人想看看的话。我似乎想不通这件事。

EN

回答 2

Stack Overflow用户

发布于 2017-05-17 07:57:44

你指的是与“标签”和“显示”按钮相交的额外边界框吗?

如果您使用Xcode的视图调试器查看视图层次结构的分解和每个视图的绘制内容,您将看到额外的边界框是由GT_BorderedView绘制的-也就是说,底部的GT_BorderedView每个都绘制两个边界框。

GT_BorderedView-drawRect:实现是基于传入的dirtyRect计算和绘制边界框的。但是,作为documentation states,脏矩形是“定义需要重绘的视图部分的矩形”,而不一定是视图的整个边界。更改实现以基于[self bounds]而不是脏矩形计算和绘制边界会得到预期的外观。

票数 2
EN

Stack Overflow用户

发布于 2017-05-17 08:02:38

泰勒成功了。我没有意识到drawRect没有渲染整个视图。使用[self bounds]而不是dirtyRect可以确保正确地进行绘制。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44011137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档