我一直在搜索stackOverflow和谷歌提出的任何建议,但我无法让它工作。我打算在scrollview中绘制一个简单的2D Graph,我的数据点之间的距离是kStepX
,我希望scrollview至少是屏幕的宽度,如果我有更多的数据点,它应该滚动但不再超过100分。
我认为我的Autolayout存在问题并调整了contentWidth的大小,所以这就是我到目前为止所做的:
在我的GraphViewController中,我将contenSize设置为:
historyScrollView.contentSize = CGSizeMake(MAX(SCREEN_WIDTH,sizeof(data)*kStepX), kGraphHeight);
但它不会滚动! 如果我在故事板中设置了固定宽度,则滚动视图会比我有数据滚动得更远。
我做错了什么?
答案 0 :(得分:1)
使用自动布局时,您不应该设置contentSize
的{{1}}。如果设置正确,则应根据约束计算。
您缺少的是在scrollView内的视图上设置宽度和高度约束。 scrollView
根据子视图的大小确定scrollView
contentSize
。由于UIView
没有内在大小,因此您需要向其添加width
和height
约束,然后在需要时使用正确的值更新它
这样的事情应该有效:
innerViewWidthConstraint.constant = MAX(SCREEN_WIDTH,sizeof(data)*kStepX)
innerViewHeightConstraint.constant = kGraphHeight
// You might need to layout the views too
[historyScrollView layoutIfNeeded]
希望这有帮助!祝你好运:)
答案 1 :(得分:0)
在主视图中将ScrollView放在一边,并提供Top
,Bottom
,Leading
,Trailing
,Center X
和Center Y
。< / p>
在您GraphView
内取scrollview
后,并设置约束GraphView
。
设置GraphView
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *HeightGraphView;
当您设置HeightGraphView
然后自动设置ScrollView contentSize。
请参阅我的演示,它的工作是垂直滚动,适用于水平滚动。