簡體   English   中英

自定義視圖無法使用自動布局調整大小

[英]Custom view not resizing with auto-layout

注意:您不必檢查庫就可以理解問題,我只是提出來供參考。

我在xcode中實現了DIDatePicker 我將其插入view是:使用auto-layoutUIView插入到viewController ,然后在身份檢查器中將類設置為DIDatepicker

在此處輸入圖片說明

問題是, DIDatepicker不會調整為視圖的大小。 我當時在想可能的解決方案是,將DIDatePicker設置為viewDidLoadview's class ,盡管我不知道該怎么做。

我的問題是:如果我的理論正確,那么如何將DIDatePicker設置為view's class 如果我說的不是真的,如何使DIDatePickerview調整大小?


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]; 

所以我和你有同樣的問題。

問題在於,當您構建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中。

希望這可以幫助!

我不確定您將主視圖設置為DIDatepicker的“理論”是否正確,但是您應該能夠通過選擇視圖控制器中的默認“視圖”並在其上設置自定義類來對其進行測試。 您不需要先添加UIView,只需使用View Controller隨附的UIView。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM