View 如何在VisualWorks中使用滚动条垂直排列视图?
我用Smalltalk编写RSSReader,所以我有两个模型类:RSSModel(title,entries)和EntryModel(title,image,content,date) 我有EntryView列表(继承自UI.View),现在我有了RSSView,我的displayOn方法将垂直显示条目,每个条目之间有间隙:View 如何在VisualWorks中使用滚动条垂直排列视图?,view,scrollbar,smalltalk,visualworks,View,Scrollbar,Smalltalk,Visualworks,我用Smalltalk编写RSSReader,所以我有两个模型类:RSSModel(title,entries)和EntryModel(title,image,content,date) 我有EntryView列表(继承自UI.View),现在我有了RSSView,我的displayOn方法将垂直显示条目,每个条目之间有间隙: | dy iView gap | gap := 5. dy := 0. 1 to: model entries s
| dy iView gap |
gap := 5.
dy := 0.
1 to: model entries size
do:
[:i |
iView := EntryView model: (model entries at: i).
iView displayOn: aGC at: 0 @ dy.
dy := dy + 89 + gap]
结果是:
我不知道我是否这样做的权利,所以如果你有更好的解决方案显示RSSView请告诉我
问题:
dy:=dy+89+gap
其中89是硬编码的入口高度如何获得入口的高度?使用:
"entry bounds height"
如何启用滚动条
要回答这个问题,我首先要指出,显示EntryView的方式并不是最好的方式。您想要创建一个自定义控件,就像我在您的另一个问题中解释的那样。您可以对视图使用CompositeView,并使用add:at:将每个EntryView添加到组合中
有了这些信息后,您可以转到视图的UIPainter属性编辑器中的“详细信息”选项卡,并打开垂直滚动条。但是如果我获得了入口边界高度,它会返回我的系统屏幕高度,为什么?为EntryView实现preferredBounds。检查其他实现的例子。这是可行的,但存在渲染问题:新打开的窗口看起来像在图像上:但当条目来自滚动时的不可见部分时,它看起来是这样的:可能有什么问题?