使用 UIRectFill 填充单元格的某些百分比

Posted

技术标签:

【中文标题】使用 UIRectFill 填充单元格的某些百分比【英文标题】:Filling some % of a cell using UIRectFill 【发布时间】:2014-11-11 06:42:32 【问题描述】:

我正在尝试用绿色框填充日历中的单元格,所有单元格都具有不同的高度。我通过做来创建一个 UIImage 对象

- (UIImage *)imageWithColor:(UIColor *)color width:(float)w height:(float)h 
    CGRect rect = CGRectMake(0, 0, w, h);
    // Create a w by H pixel context
    UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0);
    [color setFill];
    UIRectFill(rect);   // Fill it with your color
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;

并设置单元格的背景

for (int i = 0; i < numDatesSelected; i++) 
    UIButton *myButton = (UIButton *)[self.smallCalendarView viewWithTag:[selectedDates[i] timeIntervalSince1970]];
    float btnWidth = myButton.frame.size.width;
    float btnHeight = (myButton.frame.size.height * 0.1 * i);
    UIImage *img = [self imageWithColor:[UIColor greenColor] width:btnWidth height:btnHeight];
    [myButton setBackgroundImage:img forState:(UIControlStateNormal)];

但是,就像您在屏幕截图中看到的那样,高度彼此之间并没有太大差异,我不明白原因。如果我将宽度和高度设置为 1 和 1,矩形仍然会填充整个单元格,而我认为它应该只填充表格单元格的一小部分 (1x1),因为它的大小为 53x40。有人有想法吗?

【问题讨论】:

【参考方案1】:

确保UIButtoncontentVerticalAlignmentcontentHorizontalAlignment 属性未设置为UIControlContentHorizontalAlignmentFillUIControlContentVerticalAlignmentFill

另外,请查看此答案https://***.com/a/13093769/4171538。它可能会解释你的问题

【讨论】:

设置前景图像而不是背景图像就可以了!谢谢。

以上是关于使用 UIRectFill 填充单元格的某些百分比的主要内容,如果未能解决你的问题,请参考以下文章

是否有某些静态单元填充了其余的视图?

如何使用百分比设置表格单元格的最大宽度?

Div 内的 Div 填充整个父 DIV 而不显示:表格 [重复]

范围格式中每个单元格的 VBA 百分比

边框和填充宽度javascript

如何使用填充单元格的 UIImageView 初始化自定义 UICollectionViewCell?