使用布局锚点将 UiTableView 固定到(视图控制器)视图
pin UiTableView to (view controller)view with layout anchor
我想 'pin' 一个表视图到它的容器,一个视图控制器的视图。由于 UIView 没有锚点属性,我尝试使用 layoutMarginsGuide 来实现。
UIView does not provide anchor properties for the layout margin attributes. Instead, the layoutMarginsGuide property provides a UILayoutGuide object that represents these margins. Use the guide’s anchor properties to create your constraints.
let margins = self.view.layoutMarginsGuide
self.tableView.leadingAnchor.constraintEqualToAnchor(margins.leadingAnchor).active = true
self.tableView.trailingAnchor.constraintEqualToAnchor(margins.trailingAnchor).active = true
但是运行这段代码我得到以下错误:
** Terminating app due to uncaught exception 'NSGenericException', reason: 'Unable to activate constraint with items <UITableView: 0x7fdfd0ab5e00; frame = (0 0; 768 1024); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7fdfd8452e00>; layer = <CALayer: 0x7fdfd84c11c0>; contentOffset: {0, 0}; contentSize: {0, 0}> and <UILayoutGuide: 0x7fdfd86d7ca0 - "UIViewLayoutMarginsGuide", layoutFrame = {{0, 0}, {0, 0}}, owningView = <UIView: 0x7fdfd75a8aa0; frame = (0 0; 768 1024); autoresize = W+H; layer = <CALayer: 0x7fdfd0409270>>> because they have no common ancestor. Does the constraint reference items in different view hierarchies? That's illegal.'
重要部分:
...because they have no common ancestor. Does the constraint reference items in different view hierarchies? That's illegal.'
但这应该如何运作?
先把约束改成这样
self.tableView.leftAnchor.constraintEqualToAnchor(view.leftAnchor).active = true
self.tableView.rightAnchor.constraintEqualToAnchor(view.rightAnchor).active = true
如果问题仍然存在,请确保将表视图添加为视图的子视图
view.addSubview(tableView)
我想 'pin' 一个表视图到它的容器,一个视图控制器的视图。由于 UIView 没有锚点属性,我尝试使用 layoutMarginsGuide 来实现。
UIView does not provide anchor properties for the layout margin attributes. Instead, the layoutMarginsGuide property provides a UILayoutGuide object that represents these margins. Use the guide’s anchor properties to create your constraints.
let margins = self.view.layoutMarginsGuide
self.tableView.leadingAnchor.constraintEqualToAnchor(margins.leadingAnchor).active = true
self.tableView.trailingAnchor.constraintEqualToAnchor(margins.trailingAnchor).active = true
但是运行这段代码我得到以下错误:
** Terminating app due to uncaught exception 'NSGenericException', reason: 'Unable to activate constraint with items <UITableView: 0x7fdfd0ab5e00; frame = (0 0; 768 1024); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7fdfd8452e00>; layer = <CALayer: 0x7fdfd84c11c0>; contentOffset: {0, 0}; contentSize: {0, 0}> and <UILayoutGuide: 0x7fdfd86d7ca0 - "UIViewLayoutMarginsGuide", layoutFrame = {{0, 0}, {0, 0}}, owningView = <UIView: 0x7fdfd75a8aa0; frame = (0 0; 768 1024); autoresize = W+H; layer = <CALayer: 0x7fdfd0409270>>> because they have no common ancestor. Does the constraint reference items in different view hierarchies? That's illegal.'
重要部分:
...because they have no common ancestor. Does the constraint reference items in different view hierarchies? That's illegal.'
但这应该如何运作?
先把约束改成这样
self.tableView.leftAnchor.constraintEqualToAnchor(view.leftAnchor).active = true
self.tableView.rightAnchor.constraintEqualToAnchor(view.rightAnchor).active = true
如果问题仍然存在,请确保将表视图添加为视图的子视图
view.addSubview(tableView)