第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

自動(dòng)布局的UICollectionView自尺寸單元

自動(dòng)布局的UICollectionView自尺寸單元

慕勒3428872 2019-07-08 15:12:25
自動(dòng)布局的UICollectionView自尺寸單元我在試著自我調(diào)整UICollectionViewCells使用自動(dòng)布局,但我似乎無(wú)法讓單元格按照內(nèi)容進(jìn)行調(diào)整。我很難理解單元格的大小是如何從單元格的內(nèi)容中更新的。下面是我嘗試過(guò)的設(shè)置:習(xí)俗UICollectionViewCell帶著UITextView在它的內(nèi)容視圖中。滾動(dòng)UITextView是殘疾的。ContentView的水平約束是:“H:Guide[_textView(320)]”,即UITextView被固定在單元格的左側(cè),顯式寬度為320。contentView的垂直約束是:“V:x-0-[_textView]”,即UITextView被釘在牢房頂部。這個(gè)UITextView將高度約束設(shè)置為UITextView報(bào)告將符合文本。下面是將單元格背景設(shè)置為紅色的樣子,UITextView背景設(shè)置為藍(lán)色:我把我一直在玩的項(xiàng)目放在GitHub上這里.
查看完整描述

3 回答

?
繁華開(kāi)滿天機(jī)

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊

更新SWIFT 4

systemLayoutSizeFittingSize重命名為systemLayoutSizeFitting


為IOS 9更新

在看到我的GitHub解決方案在iOS 9下崩潰后,我終于有時(shí)間對(duì)這個(gè)問(wèn)題進(jìn)行充分的調(diào)查。我現(xiàn)在已經(jīng)更新了回購(gòu),以包括幾個(gè)不同的配置,為自我大小單元。我的結(jié)論是,自我大小的細(xì)胞在理論上是偉大的,但在實(shí)踐中是混亂的。在使用自調(diào)整大小的單元格時(shí),請(qǐng)注意。

TL;DR

看看我的GitHub項(xiàng)目


自調(diào)整單元格只支持流布局,所以請(qǐng)確保這是您正在使用的。

要使自調(diào)整單元格工作,需要設(shè)置兩件事。

1.成套estimatedItemSize在……上面UICollectionViewFlowLayout

一旦您設(shè)置了estimatedItemSize財(cái)產(chǎn)。

self.flowLayout.estimatedItemSize = CGSize(width: 100, height: 100)

2.在單元格子類上添加對(duì)調(diào)整大小的支持。

這有兩種口味:自動(dòng)布局自定義覆蓋preferredLayoutAttributesFittingAttributes.

使用自動(dòng)布局創(chuàng)建和配置單元格

我不想詳細(xì)介紹這件事,因?yàn)檫@是一件很棒的事所以貼關(guān)于為單元格配置約束。只是小心一點(diǎn)Xcode 6中斷如果您支持IOS 7,則需要確保在單元格的內(nèi)容視圖上設(shè)置自動(dòng)調(diào)整大小掩碼,并且在加載單元格時(shí),將內(nèi)容視圖的邊界設(shè)置為單元格的邊界(即awakeFromNib).

您需要注意的是,您的單元格需要比表視圖單元格受到更嚴(yán)重的約束。例如,如果您希望您的寬度是動(dòng)態(tài)的,那么您的單元格需要一個(gè)高度約束。同樣,如果希望高度是動(dòng)態(tài)的,則需要對(duì)單元格設(shè)置寬度約束。

實(shí)施preferredLayoutAttributesFittingAttributes在您的自定義單元格中

調(diào)用此函數(shù)時(shí),您的視圖已經(jīng)配置了內(nèi)容(即cellForItem已經(jīng)打電話了)。假設(shè)您的約束已被適當(dāng)設(shè)置,您可以有如下實(shí)現(xiàn):

//forces the system to do one layout passvar isHeightCalculated: Bool = falseoverride func preferredLayoutAttributesFittingAttributes
(_ layoutAttributes: UICollectionViewLayoutAttributes) -> UICollectionViewLayoutAttributes {
    //Exhibit A - We need to cache our calculation to prevent a crash.
    if !isHeightCalculated {
        setNeedsLayout()
        layoutIfNeeded()
        let size = contentView.systemLayoutSizeFitting(layoutAttributes.size)
        var newFrame = layoutAttributes.frame
        newFrame.size.width = CGFloat(ceilf(Float(size.width)))
        layoutAttributes.frame = newFrame
        isHeightCalculated = true
    }
    return layoutAttributes}

在IOS 9上,如果您不小心,這種行為可能會(huì)導(dǎo)致您的實(shí)現(xiàn)崩潰(請(qǐng)參閱更多信息)。這里)。當(dāng)你實(shí)現(xiàn)preferredLayoutAttributesFittingAttributes您需要確保只更改布局屬性的框架一次。如果不這樣做,布局將無(wú)限期地調(diào)用您的實(shí)現(xiàn),并最終崩潰。一種解決方案是將計(jì)算出來(lái)的大小緩存在單元格中,并在任何時(shí)候重復(fù)使用單元格或更改其內(nèi)容,就像我對(duì)isHeightCalculated財(cái)產(chǎn)。

體驗(yàn)?zāi)愕牟季?/trans>

此時(shí),您應(yīng)該在您的集合視圖中具有“功能”動(dòng)態(tài)單元格。在我的測(cè)試中,我還沒(méi)有找到足夠的開(kāi)箱即用解決方案,所以如果有,請(qǐng)隨意評(píng)論。我還是覺(jué)得UITableView贏得動(dòng)態(tài)尺寸IMHO的戰(zhàn)斗。

警告

要非常注意,如果您使用原型單元格來(lái)計(jì)算估計(jì)的ItemSize-如果您的XIB使用大小類..這樣做的原因是,當(dāng)您從XIB加載單元時(shí),它的大小類將被配置為Undefined..這只會(huì)在iOS 8和更高版本上被打破,因?yàn)樵趇OS 7上,大小類將根據(jù)設(shè)備加載(ipad=正則-any,iphone=Compact-any)。您可以在不加載XIB的情況下設(shè)置估計(jì)ItemSize,也可以從XIB加載單元格,將其添加到集合視圖(這將設(shè)置traitCollection),執(zhí)行布局,然后從SuperView中刪除它?;蛘?,您也可以讓您的單元格覆蓋traitCollection獲取并返回適當(dāng)?shù)奶卣?。由你決定。

如果我錯(cuò)過(guò)了什么,請(qǐng)告訴我,希望我能幫上忙,并祝你好運(yùn)編碼。


查看完整回答
反對(duì) 回復(fù) 2019-07-08
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

在iOS 10中有一個(gè)新的常量稱為UICollectionViewFlowLayout.automaticSize(原)UICollectionViewFlowLayoutAutomaticSize),因此:

self.flowLayout.estimatedItemSize = CGSize(width: 100, height: 100)

你可以用這個(gè):

self.flowLayout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize

它具有更好的性能,特別是當(dāng)集合視圖中的單元格具有常量wid時(shí)。


查看完整回答
反對(duì) 回復(fù) 2019-07-08
  • 3 回答
  • 0 關(guān)注
  • 3088 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)