我有一个容纳UITableview的containerview。使用调试版本,一切看起来都不错 -
但是在发布版本中,childviewcontroller显示为插入 -
这是实例化视图的代码 -
self.dailyWeatherTableViewController=[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"DailyForecastViewController"];
self.dailyWeatherTableViewController.view.frame =self.view.frame;
UIEdgeInsets newSafeArea;
newSafeArea.top=self.headerView.frame.size.height;
if (@available(iOS 11.0, *)) {
self.dailyWeatherTableViewController.additionalSafeAreaInsets=newSafeArea;
} else {
// Fallback on earlier versions
}
[self addChildViewController:self.dailyWeatherTableViewController];
[self.forecastContainerView addSubview:self.dailyWeatherTableViewController.view];
[self.dailyWeatherTableViewController didMoveToParentViewController:self];
视图层次结构调试器显示UITableviewCellContentView的封装布局宽度设置为261.一些谷歌搜索似乎表明这与视图的自动调整掩码相关,但在cellforindex方法中更改此设置或设置视图的帧并不能解决问题。
以下是tableview约束的截图 -
答案 0 :(得分:0)
似乎罪魁祸首是容器的additionalSafeAreaInsets。在向左和向右添加0之后,边距是固定的 -
`if (@available(iOS 11.0, *)) {
UIEdgeInsets newSafeArea;
newSafeArea.top=self.headerView.bounds.size.height;
newSafeArea.right=0;
newSafeArea.left=0;
newSafeArea.bottom=0;
self.dailyWeatherTableViewController.additionalSafeAreaInsets=newSafeArea;
}`
我仍然不确定为什么这是必要的,因为苹果示例不这样做 - https://developer.apple.com/documentation/uikit/uiview/positioning_content_relative_to_the_safe_area?language=objc