我有UITableView
,其UISearchBar
子视图。这一切都在UIViewController
的视图以及一些其他子视图(标签,文本字段等)上。
表的搜索栏和内容偏移量非常奇怪,但它似乎取决于这些视图添加到xib中主视图的顺序。我创建了一个示例项目,只有我的表/搜索和标签才能测试,结果是一样的。当在标签后添加表格时,一切正常:
然而,如果我只是更改我的2个子视图在主视图上的顺序(也就是在标签之前添加了表),那么奇怪的事情就会开始发生。< / p>
我没有改变任何其他内容,为什么Xcode似乎关心这些子视图添加到主视图的顺序?如果我向上滚动“坏”表设置,搜索栏会立即在其顶部边缘消失,但表的内容将继续向上滚动,直到它到达xib中设置的帧的顶部。向下滚动,搜索栏不会重新出现,直到奇怪的降低位置。这是在Xcode 5.1.1中,而不是新的测试版。无论是否启用了Autolayout,结果都是相同的。 知道为什么会这样吗?这是一个错误,还是我错过了什么? (我没有发布任何代码,因为我所做的只是设置节,行和在单元格上设置文本的数量。不要弄乱内容插入,偏移,任何东西。我从应用程序委托加载视图导航控制器的根源)显然设置错误:
搜索栏的奇怪偏移:
答案 0 :(得分:14)
这是因为UIViewController
的属性名为automaticallyAdjustsScrollViewInsets
对于iOS 7,UIViewControllers有一个名为的属性 automaticAdjustsScrollViewInsets,默认为YES。如果你 有一个滚动视图,它是视图的根视图 控制器(例如使用UITableViewController)或子视图 索引0,那么该属性将调整contentInset和 scrollIndicatorInsets。这将允许您的滚动视图启动它 导航栏下方的内容和滚动指示器(如果您的视图 控制器在导航控制器中。)
如果您使用的是故事板,则可以通过选择视图控制器进行更改,并在属性检查器中取消选择Adjust scroll view insets
。
以下是apple documentation的说明:
默认值为YES,允许视图控制器调整其值 滚动视图插入以响应所消耗的屏幕区域 状态栏,导航栏以及工具栏或标签栏。如果你设置为NO 想要自己管理滚动视图插入调整,例如何时 视图层次结构中有多个滚动视图。
答案 1 :(得分:1)
关于tableview和searchbar的位置之前我有同样的问题。我尝试了以下内容,它对我有用。
如果您没有为此编写代码,并且只是xib或storyboard的问题,请尝试所有outlet的自动调整和原点设置来修复其位置并查看差异。它可能对你有用。
答案 2 :(得分:0)
UITableView标头只能包含一个UIView,因此如果您需要UISearchBar和UILabel,则需要将它们包装到UIView中并将此视图添加为UITableView标头。
答案 3 :(得分:0)
更新:ios 11中已弃用void NewWindow::on_combobox_New_currentIndexChanged(int index) //slot function
{
QWidget* box = new QWidget();
box->setWindowModality(Qt::ApplicationModal);
box->setWindowTitle("Wait...");
QHBoxLayout* layout = new QHBoxLayout();
box->setLayout(layout);
QLabel* lbl = new QLabel();
lbl->setText("Loading...");
layout->addWidget(lbl);
box->show();
QCoreApplication::processEvents(); // cause the box to be displayed
for (int var = 0; var < st.size(); ++var)
{
//Some heavy lifting here
// if you do anything here to change the widget, such as
// updating a progress bar, you need to `processEvents` again
QCoreApplication::processEvents();
}
box->close();
}
,并且已引入新字段automaticallyAdjustsScrollViewInsets
。
contentInsetAdjustmentBehavior