在 UICollectionView 中创建具有完全适合形状的 UIImageView 中的 UIImageView

Create UIImageView in UIImageView with full fit shape in UICollectionView

我有使用 UIImageView-Letters 库的 UIImageView。 我想创建新的 UIImageView,它位于前一个的顶部,完全适合它的形状和大小。

创建第一个视图:

[cell.photo setImageWithString:@"N A"
                         color:[UIColor redColor]
                      circular:YES];

正在创建第二个视图:

- (UIImageView *)createRecordAnimationViewFrom:(UIImageView *)imageView {
    CGRect rect = CGRectMake(imageView.bounds.origin.x,
                             imageView.bounds.origin.y,
                             imageView.bounds.size.width,
                             imageView.bounds.size.height);
    UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:rect
                                                          cornerRadius:imageView.bounds.size.width / 2];

    UIImageView *progressView = [[UIImageView alloc] initWithFrame:rect];
    progressView.backgroundColor = [UIColor blackColor];
    progressView.alpha = 0.5;
    CAShapeLayer *maskLayer = [CAShapeLayer layer];

    maskLayer.frame = progressView.frame;
    maskLayer.path = [bezierPath CGPath];
    progressView.layer.mask = maskLayer;
    progressView.tag = 101;

    return progressView;
}

将一个附加到另一个:

[cell.photo addSubview:[self createRecordAnimationViewFrom:cell.photo]];` 

来自

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

已经尝试使用

cell.photo.layer.masksToBounds = NO;
cell.photo.clipsToBounds = YES;

没有帮助。

我的问题是第二个视图不适合第一个视图的大小(它根本不是通过自动布局自动调整大小),您可以在图片上找到。

我错过了什么?

通过将 (UIImageView *)createRecordAnimationViewFrom:(UIImageView *)imageView 移动到 dispatch_async(dispatch_get_main_queue(), ^ {}) 块中解决了问题。