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

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

UITableViewCell中的iOS7上的自動(dòng)布局約束問(wèn)題

UITableViewCell中的iOS7上的自動(dòng)布局約束問(wèn)題

iOS
PIPIONE 2019-12-12 13:01:01
我正在以編程方式使用自動(dòng)布局約束來(lái)布局自定義UITableView單元,并且正確定義了 tableView:heightForRowAtIndexPath:這是對(duì)iOS6的工作得很好,它的外觀(guān)罰款iOS7以及但是,當(dāng)我在iOS7上運(yùn)行該應(yīng)用程序時(shí),這是我在控制臺(tái)中看到的消息:Break on objc_exception_throw to catch this in the debugger.The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.2013-10-02 09:56:44.847 Vente-Exclusive[76306:a0b] Unable to simultaneously satisfy constraints.    Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) (        "<NSLayoutConstraint:0xac4c5f0 V:|-(15)-[UIImageView:0xac47f50]   (Names: '|':UITableViewCellContentView:0xd93e850 )>",        "<NSLayoutConstraint:0xac43620 V:[UIImageView:0xac47f50(62)]>",        "<NSLayoutConstraint:0xac43650 V:[UIImageView:0xac47f50]-(>=0)-[UIView:0xac4d0f0]>",        "<NSLayoutConstraint:0xac43680 V:[UIView:0xac4d0f0(1)]>",        "<NSLayoutConstraint:0xac436b0 V:[UIView:0xac4d0f0]-(0)-|   (Names: '|':UITableViewCellContentView:0xd93e850 )>",)Will attempt to recover by breaking constraint <NSLayoutConstraint:0xac43650 V:[UIImageView:0xac47f50]-(>=0)-[UIView:0xac4d0f0]>而且的確有在該列表中,我不想約束之一:"<NSAutoresizingMaskLayoutConstraint:0xac6b120 h=--& v=--& V:[UITableViewCellContentView:0xd93e850(44)]>"而且我無(wú)法將的translatesAutoresizingMaskIntoConstraints屬性設(shè)置contentView為NO =>會(huì)弄亂整個(gè)單元格。44是默認(rèn)的單元格高度,但是我在表格視圖委托中定義了我的自定義高度,那么為什么單元格contentView具有此約束?是什么原因造成的?在iOS6中這沒(méi)有發(fā)生,并且在iOS6和iOS7上一切都看起來(lái)很好。我的代碼很大,因此我不會(huì)在這里發(fā)布它,但是如果您需要它,可以隨時(shí)請(qǐng)求一個(gè)pastebin。要指定我的操作方式,有關(guān)單元格初始化:我創(chuàng)建了所有標(biāo)簽,按鈕等我將其translatesAutoresizingMaskIntoConstraints財(cái)產(chǎn)設(shè)置為“否”我將它們添加為contentView單元格的子視圖我在 contentView我也很想了解為什么僅在iOS7上會(huì)發(fā)生這種情況。
查看完整描述

3 回答

?
largeQ

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

我也遇到了這個(gè)問(wèn)題。似乎在layoutSubviews調(diào)用contentView的框架之前,它不會(huì)得到更新, 但是單元格的框架會(huì)更早更新,而在{0, 0, 320, 44}評(píng)估約束時(shí)將contentView的框架設(shè)置為。


詳細(xì)查看contentView之后,似乎不再設(shè)置autoresizingMask。


在約束視圖之前設(shè)置autoresizingMask可以解決此問(wèn)題:


- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

{

    self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuseIdentifier];

    if (self)

    {

        self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;

        [self loadViews];

        [self constrainViews];

    }

    return self;

}


查看完整回答
反對(duì) 回復(fù) 2019-12-12
?
12345678_0001

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

顯然,使用iOS 8 SDK的iOS 7上的UITableViewCell和UICollectionViewCell出了問(wèn)題。


像這樣重用單元格時(shí),可以更新單元格的contentView:


對(duì)于靜態(tài)UITableViewController:


#ifdef __IPHONE_OS_VERSION_MIN_REQUIRED

#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_8_0


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    UITableViewCell *cell = [super tableView:tableView cellForRowAtIndexPath:indexPath];


    if (NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1)

    {

        cell.contentView.frame = cell.bounds;

        cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin |UIViewAutoresizingFlexibleTopMargin |UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin;

    }


    //your code goes here


    return cell;

}


#endif

#endif

由于靜態(tài)表視圖控制器易碎,如果實(shí)現(xiàn)某些數(shù)據(jù)源或deletegate方法,則很容易損壞-有檢查將確保僅在iOS 7上編譯和運(yùn)行此代碼


它與標(biāo)準(zhǔn)動(dòng)態(tài)UITableViewController類(lèi)似:


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    static NSString *cellID = @"CellID";


    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];


    if (NSFoundationVersionNumber <= NSFoundationVersionNumber_iOS_7_1)

    {

        cell.contentView.frame = cell.bounds;

        cell.contentView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin |UIViewAutoresizingFlexibleTopMargin |UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleBottomMargin;

    }

    //your code goes here       

    return cell;

}

對(duì)于這種情況,我們不需要額外的編譯檢查,因?yàn)樾枰獙?shí)現(xiàn)此方法。


這兩種情況以及UICollectionViewCell的想法都是相同的,就像在此線(xiàn)程中所評(píng)論的:僅在iOS 7上運(yùn)行時(shí),才會(huì)在Storyboard原型單元(Xcode 6,iOS 8 SDK)中自動(dòng)調(diào)整UICollectionViewCell contentView的框架大小


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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