Chl*_*bta 3 objective-c ios uicollectionview
当用户长按单元格时,我想将徽章添加到我的 UICollectionViewCell 中。这是我的代码:
- (void)activateDeletionMode:(UILongPressGestureRecognizer *)gesture
{
if (gesture.state == UIGestureRecognizerStateBegan)
{
NSIndexPath *indexPath = [_favoriteCollection indexPathForItemAtPoint:[gesture locationInView:_favoriteCollection]];
UICollectionViewCell *cell = [_favoriteCollection cellForItemAtIndexPath:indexPath];
//M13BadgeView *badgeView = [[M13BadgeView alloc] initWithFrame:CGRectMake(-12,-12, 24.0, 24.0)];
M13BadgeView *badgeView = [[M13BadgeView alloc] initWithFrame:CGRectMake(200,200, 24.0, 24.0)];
badgeView.text = @"1";
[cell addSubview:badgeView];
[cell bringSubviewToFront:badgeView];
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我的单元格在长按后的样子:

正如你所看到的,我牢房中的红色小硬币是徽章,即使我改变框架,它也永远不会改变她的位置,例如:
//M13BadgeView *badgeView = [[M13BadgeView alloc] initWithFrame:CGRectMake(-12,-12, 24.0, 24.0)];
M13BadgeView *badgeView = [[M13BadgeView alloc] initWithFrame:CGRectMake(200,200, 24.0, 24.0)];
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用[cell bringSubviewToFront:badgeView];or[_favoriteCollection bringSubviewToFront:badgeView];但没有成功。
**注意我正在使用这个库作为徽章
更新感谢卢克的回答,将 maskToBounds 设置为 false 现在我的徽章出现了,但我遇到了另一个小问题,单元格的边框显示在徽章中,请检查:

为了使徽章正确显示,您必须确保单元格不会将其内容剪切到其边界。因此您需要将该属性设置clipsToBounds为false。这将导致徽章在其超级视图框架之外渲染。
查看您使用的库的代码后,我发现在更改text徽章的属性后autoSetBadgeFrame,会调用一个名为的方法。此功能将导致框架发生变化,而不考虑先前设置的框架。horizontalAlignment要更改该行为,您应该使用和两个属性指定对齐方式verticalAlignment。明确设置框架将导致其某些子图层可能无法正确显示。您可能应该在设置文本之前将子视图添加到单元格中。这个顺序将导致已经解释的autoSetBadgeFrame有一个有效的超级视图来对齐。
关于边界:如何指定边界?
| 归档时间: |
|
| 查看次数: |
2175 次 |
| 最近记录: |