自定义视图不会使用自动布局调整大小

时间:2015-06-03 03:09:19

标签: ios objective-c uiview autolayout

注意:您不必检查库以了解问题,我只是提出来参考。

我在xcode中实现了DIDatePicker。我在view中插入的方式是:我使用UIViewviewController插入auto-layout,然后在身份检查器中将类设置为DIDatepicker }。

enter image description here

问题是,DIDatepicker没有调整视图的大小。我在考虑可能的解决办法,将DIDatePicker设置为view's class中的viewDidLoad,但我不知道该怎么做。

我的问题是:如果我的理论是正确的,我如何将DIDatePicker设为view's class。如果我说的不对,我怎样才能DIDatePicker使用view调整大小?

DIDatePicker有一个collectionView;这是它的定义:

UICollectionViewFlowLayout *collectionViewLayout = [[UICollectionViewFlowLayout alloc] init]; 
[collectionViewLayout setItemSize:CGSizeMake(kDIDatepickerItemWidth, CGRectGetHeight(self.bounds))]; 
[collectionViewLayout setSectionInset:UIEdgeInsetsMake(0, kDIDatepickerSpaceBetweenItems, 0, kDIDatepickerSpaceBetweenItems)]; 
[collectionViewLayout setMinimumLineSpacing:kDIDatepickerSpaceBetweenItems];

_datesCollectionView = [[UICollectionView alloc] initWithFrame:self.bounds collectionViewLayout:collectionViewLayout]; 

2 个答案:

答案 0 :(得分:0)

所以我和你有同样的问题。

问题在于,当您构建DIDatepicker时,它会根据视图的原始框架而不是自动布局后的框架构建自己的集合视图。

解决这个问题的方法是不要制作类DIDatepicker的故事板UIView。相反,只需使用普通的UIView,然后使用与ViewDidLoad方法中的UIView相同的框架创建一个DIDatepicker实例。

这是一个例子。 datePickerView是故事板中的UIView。

datepicker = DIDatepicker(frame: CGRectMake(datePickerView.frame.origin.x, datePickerView.frame.origin.y , self.view.frame.width, datePickerView.frame.height));
self.view.addSubview(datepicker!);

如果这不起作用,请尝试更改框架并将其作为子视图而不是主视图添加到datePickerView。

希望这有帮助!

答案 1 :(得分:-1)

我不完全确定你的"理论"关于将主视图设置为DIDatepicker是正确的,但您应该能够通过选择默认" View"来测试它。在View Controller中并在其上设置自定义类。您不应该首先添加UIView,只需使用View Controller附带的UIView。