我正在将我的项目转移到 iOS7。我面临一个与半透明导航栏相关的奇怪问题。
我有一个 View Controller ,它有一个 TableView 作为 subview (我们称之为 ControllerA)。我用 controllerA 初始化了一个新的 uinavigationcontroller,并使用 presentviewcontroller 以模态方式呈现它。呈现的 View Controller 的表格 View 被导航栏挡住了。我将 automaticallyAdjustsScrollViewInsets 设置为 YES 但结果没有改变。 我知道我可以将 edgesForExtendedLayout 设置为 UIRectEdgeNone,但它会使导航栏不再半透明。
之后,我尝试创建一个新的 View Controller 进行测试。它包含几乎相同的元素。但结果却大不相同。表格 View 内容不会被阻止。
结论
最佳答案
我在苹果开发者论坛上找到了答案。 有两种不同的情况。
第一个,添加的 View Controller 是一个UITableViewController。 而且这个问题不应该出现,因为苹果会自动填充它。
第二个, View Controller 不是 UITableViewController。 在 View 层次结构中,它包含一个 UITableView。在这种情况下,如果 UITableview(或 ScrollView)是 viewController 的主视图或主视图的第一个 subview ,它将起作用。否则, View Controller 不知道要填充哪个 ScrollView ,就会出现问题。
在我的例子中, View Controller 是第二个。并且有一个背景 ImageView 作为主视图的第一个 subview 。所以,它失败了。
这是 Apple 开发者论坛链接(需要开发者帐户才能访问): https://devforums.apple.com/message/900138#900138
https://stackoverflow.com/questions/19091737/
相关文章:
iphone - 什么是-[NSString sizeWithFont :forWidth:line
objective-c - 'pod install' 不会更新现有的 pod
objective-c - 恢复 iOS7 之前的 UINavigationController p
iphone - UITableView/UITableViewCell 点击事件响应?
ios - 将 NSInteger 转换为 NSIndexpath
ios - 在objective-c中导入swift类,