如何在单元格对象中更改 UICollectionViewcell 大小形式的 IBAction

Posted

技术标签:

【中文标题】如何在单元格对象中更改 UICollectionViewcell 大小形式的 IBAction【英文标题】:How to change a UICollection View cell size form IBAction in cell object 【发布时间】:2015-02-26 23:34:45 【问题描述】:

我正在开发一个 uiCollection 视图,其中我有 4 个单元格,在第 4 个单元格上,我有 uiview,其中包含按钮和 ui textview。一旦我点击按钮,文本视图应该显示并关闭。

我不知道如何处理这个问题,如何在单元格对象不作为时增加特定的单元格大小

UICollectionview.M
#pragma mark - UICollectionView DataSource & Delegate methods

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
    return 4;



- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section


        return 1;



- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

    if (indexPath.section==2) 
        UICollectionViewCell * cell =[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier2 forIndexPath:indexPath];

        return cell;
    
    else if(indexPath.section==1)
        UICollectionViewCell * cell =[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier1 forIndexPath:indexPath];

        return cell;
    
    else if(indexPath.section==0)
        UICollectionViewCell * cell =[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

        return cell;
    
    else

        infoCell * cell =[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier3 forIndexPath:indexPath];

            return cell;

    



- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
    if (indexPath.section == 3) 
            return CGSizeMake(self.width, self.height);

    

    else
     return CGSizeMake(309, 300);
    


@end

cell object
cellobject.h

@interface InfoCell : UICollectionViewCell

BOOL toggleIsOn;


@property (weak, nonatomic) IBOutlet UIView *infoView;
@property (weak, nonatomic) IBOutlet UIButton *dropDownButton;
@property (weak, nonatomic) IBOutlet UITextView *infoDescrip;


@end

cell object.m

-(IBAction)revealDescription:(id)sender
    if (toggleIsOn)
    
        self.infoDescrip.hidden= YES;
        self.infoView.frame=CGRectMake(0, 0, 309,44);
    
    else
    
        self.infoDescrip.hidden= NO;
        NSDictionary *attributes = @NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue" size:14];
        CGRect rect = [self.infoDescrip.text boundingRectWithSize:CGSizeMake(300, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin
                                                       attributes:attributes context:nil];
        self.infoDescrip.frame= CGRectMake(0, 46, 300, rect.size.height);
        self.infoView.frame=CGRectMake(0, 0, 309, rect.size.height+50);



    
    toggleIsOn = !toggleIsOn;
   [self.dropDownButton setImage:[UIImage imageNamed:toggleIsOn ? @"arrow_down_blue" :@"arrow_right_blue"] forState:UIControlStateNormal];


我正在努力摆脱这个任何帮助?

【问题讨论】:

【参考方案1】:

您可以将特定单元格的 indexPath 保存在 @property 中。在HeightForRowAtIndexPath: 中使用 BOOL 标志创建 2 个案例:一个用于正常尺寸,一个用于大尺寸。

然后你可以点击按钮,激活一些 BOOL 标志并用动画重新加载单元格。

【讨论】:

以上是关于如何在单元格对象中更改 UICollectionViewcell 大小形式的 IBAction的主要内容,如果未能解决你的问题,请参考以下文章

如何在单元格对象中更改 UICollectionViewcell 大小形式的 IBAction

重新排序单元格后如何更改获取结果控制器数组中对象的顺序

UICollectionView 在旋转时重新排列单元格

Swift 4 - 如果已选择,请取消选择集合视图单元格

如何以编程方式更改表格单元格中单选按钮组的单选按钮?

更改集合视图单元格中文本 NSString 的大小