Ios 强制进行布局,以保证赢得的宽度';布局完成后,请不要更改
我正在以编程方式在Ios 强制进行布局,以保证赢得的宽度';布局完成后,请不要更改,ios,swift,ios-app-extension,ios8-today-widget,Ios,Swift,Ios App Extension,Ios8 Today Widget,我正在以编程方式在viewdiload中创建UICollectionView,然后对其设置自动布局约束。我需要确切地知道集合视图显示给用户后的宽度,但我需要viewDidLoad中的信息(不能使用willLayoutSubviews等) 如何强制布局,以便我可以保证宽度将更新为viewDidLoad中的真实宽度 //viewDidLoad: let collectionView = //... self.view.addSubview(collectionView) //add constrai
viewdiload
中创建UICollectionView
,然后对其设置自动布局约束。我需要确切地知道集合视图显示给用户后的宽度,但我需要viewDidLoad
中的信息(不能使用willLayoutSubviews
等)
如何强制布局,以便我可以保证宽度将更新为viewDidLoad
中的真实宽度
//viewDidLoad:
let collectionView = //...
self.view.addSubview(collectionView)
//add constraints here
let wid = collectionView.frame.size.width //0
//viewDidAppear:
let wid = collectionView.frame.size.width //603
我尝试调用self.view.layoutSubviews(),但这并没有完全解决问题。它将wid从0改为720,但这是不正确的
我在Today扩展中尝试此操作,它可能不同于传统的视图控制器。使用
视图将出现:
。视图将加载正确的帧,然后您可以在视图实际显示之前创建集合视图。我不能使用将显示,因为这会不希望地影响扩展的行为。我根据宽度所做的更改必须在视图出现之前设置,并且只设置一次。是否将宽度设置为特定值?或者,是否根据周围视图设置自动布局约束?在使用集合视图宽度执行计算后,我正在更改自动布局约束常量。在视图中执行此操作的不良行为将出现
,即扩展在加载时高度会增加,加载完成后会收缩。我需要提前设置它,使其始终保持相同的高度。集合视图的宽度是动态的,无论当前视图的宽度对于它运行的设备是什么(它有superview的前导和尾随。同样在iPad上,视图中报告的宽度将出现
不是视图中报告的宽度出现
——它关闭了很多。