更改UICollectionViewCell子视图框架

时间:2019-10-25 07:32:53

标签: ios objective-c uicollectionviewcell

我有一个带有几个子视图的UICollectionView子类。单元格类包含一种方法,该方法应使单元格中的一个子视图(timerView)动画化。问题是,尽管NSLog()语句表明正在更改框架,但是什么也没有发生。子视图的框架没有变化。如何使subView的框架发生变化?

UIView *superView = self.timerView.superview;

//Force the border view to layout so we can get the size
[superView layoutIfNeeded];

NSLog(@"%@", NSStringFromCGRect(superView.frame));


self.timerView.frame = CGRectMake(0, 0, 0, superView.frame.size.height);

NSLog(@"%@", NSStringFromCGRect(self.timerView.frame));

[UIView animateWithDuration:duration animations:^{
    self.timerView.frame = self.timerView.superview.frame;
} completion:^(BOOL finished) {
    if (completion) {
        completion();
    }
}];

1 个答案:

答案 0 :(得分:1)

嗯,答案很简单,但是花了我几个小时才能解决。我正在使用function GetFileNameDate($location) { $files = scandir($location); $path = $location; foreach ($files as $file) { $iterator = new DirectoryIterator($path); $mtime = 0; $file = ""; foreach ($iterator as $fileinfo) { if ($fileinfo->isFile()) { if ($fileinfo->getMTime() > $mtime) { $file = $fileinfo->getFilename(); $mtime = $fileinfo->getMTime(); } } } return array($path, $file, $mtime); } } foreach ($arrValues as $row){ $locations = array(rtrim($row['Folder'])); foreach ($locations as $FolderPath) { $FileNameDate = GetFileNameDate($FolderPath); echo $FileNameDate[0]; #folder echo $FileNameDate[1]; #file echo $FileNameDate[2]; #date } } 检索对UICollectionViewCell中的目标collectionView: didSelectItemAtIndexPath:的引用。这意味着,由于出队,被引用的单元并不总是我认为的单元。最后,我从单元格创建了一个自定义委托回调,因此我可以拥有自己的collectionView: cellForItemAtIndexPath:方法,该方法也可以传递单元格本身。这样,我知道我要处理的单元始终是我认为的单元,然后动画开始工作。

我只有在开始遇到属性问题时才意识到这一点,我知道当通过其他方法访问时,我设置为didSelectItem...。所以我意识到一个新的单元正在出队。

感谢所有帮助,对不起,这有点太疯狂了。