我添加了一个方法,使滚动视图滚动到它的顶部。这在iOS10中正如预期的那样工作。但是当我使用Xcode 9升级到iOS11时,它无法正常工作。 iOS11是否有任何遗漏 下面的代码正在运行:
[self setContentOffset:CGPointZero animated:YES];
答案 0 :(得分:4)
你必须做
self.view.layoutIfNeeded()
在setContentOffset之前。 它会更新UIScrollView的contentSize,然后可以使用contentOffset。
答案 1 :(得分:3)
试试这个
dispatch_async(dispatch_get_main_queue(), ^{
[UIView animateWithDuration:.25 animations:^{
[self setContentOffset:CGPointZero animated:YES];
}];
});
答案 2 :(得分:2)
修复此问题的方法(至少对我的应用程序而言)是将“beginUpdates”和“endUpdates”添加到UITableView并选择“animated:NO”,如下所示:
[mySuperbTableView beginUpdates];
[mySuperbTableView setContentOffset:CGpointMake(0,0) animated:NO];
[mySuperbTableView endUpdates];
您可以将CGPoint设置为您需要的任何内容。 ; - )
在将此更新调用到UITableView之后,请注意对数据源进行任何更改,否则会崩溃!
感谢Pavithra Pavi在另一篇文章中正确回答这个问题。
编辑: 好的,它不能一直工作。 一个更好的解决方案(如果你选择不动画表视图)是设置 table.estimatedRowHeight = 0;
在你的代表中。
它似乎修复了setContentOffset的行为:动画:NO。
答案 3 :(得分:2)
(SWIFT 4) 我有一个类似的问题,问题是动画:true。 因此,您可以尝试手动执行以下操作:
'a * 'b -> 'b
希望有帮助。它为我固定了
答案 4 :(得分:1)
尝试一下
if tableView.numberOfRows(inSection: 0) > 0 {
tableView.scrollToRow(at: IndexPath(row: 0, section: 0), at: .top, animated: false)
}
答案 5 :(得分:0)
正如@Alejandro之前提到的,iOS 11确实存在setContentOffset和动画方面的问题。
我发现了如何使其发挥作用:
斯威夫特3,4:
public class AFS {
public JPanel afs(final Fields input){
JPanel titlePanel = new JPanel();
//Title fields
JLabel afs = new JLabel("Statement", Label.LEFT);
Label mm = new Label("month ", Label.LEFT);
Label my = new Label("Year ", Label.LEFT);
//first line
titlePanel.add(afs);
titlePanel.add(mm);
titlePanel.add(input.MENTRY);
titlePanel.add(my);
titlePanel.add(input.YENTRY);
titlePanel.setPreferredSize(null);
//Left Panels
JPanel sb = new JPanel();
JPanel entry = new JPanel();
entry.setLayout(new BoxLayout(entry, BoxLayout.Y_AXIS));
entry.setAlignmentX(Component.LEFT_ALIGNMENT);
entry.add(new Label("Service "));
entry.add(input.s);
entry.add(new Label("Amount "));
entry.add(input.a);
entry.add(new Label("Counter "));
entry.add(input.o);
entry.add(new Label("Division "));
entry.add(input.d);
sb.add(entry);
JPanel holderPanel = new JPanel();
holderPanel.setLayout(new BoxLayout(holderPanel, BoxLayout.Y_AXIS));
holderPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
holderPanel.add(titlePanel);
holderPanel.add(sb);
JButton start = new JButton("Save Current");
start.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ScriptAction action = new ScriptAction();
action.saveAll(input,1);
}
});
holderPanel.add(start);
return holderPanel;
}
答案 6 :(得分:0)
设置scrollview的估计的RowHeight = 0,估计的SectionHeaderHeight = 0,估计的SectionFooterHeight = 0解决了该问题。每当更改内容偏移量时,UIKit就会计算每个节的行,页眉和页脚的高度,以滚动到新的偏移量。默认情况下,estimatedRowHeight,estimatedSectionHeaderHeight,estimatedSectionFooterHeight将为-1