在 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(), ^ {})
块中解决了问题。
我有使用 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(), ^ {})
块中解决了问题。