【问题标题】:Changing the phase of a pattern image改变图案图像的相位
【发布时间】:2012-05-30 08:18:16
【问题描述】:

我正在使用图案图像作为UITableViewCell by 的背景颜色

cell.backgroundColor = [UIColor colorWithPatternImage[UIImage imageNamed:@"image.png"]]

但是,我希望图案图像的底部与单元格的底部对齐。默认情况下,图像的左上角与单元格的原点对齐。我需要这个的原因是因为单元格的高度是可变的,但无论高度如何,底部都需要看起来相同。

Apple 文档指定为了更改图案图像的相位,颜色 ([UIColor colorWothPatternImage]) 应设为当前颜色,然后应调用 CGContextSetPatternPhase。但是,我不确定如何在cellForRowAtIndexPath 中设置UITableViewCell 的背景颜色的上下文中使用此方法。

我知道以前有人问过这个问题,但是它没有回答我的问题。

【问题讨论】:

    标签: iphone ios cocoa-touch


    【解决方案1】:

    我看到这个问题是很久以前提出的,您可能已经找到了解决方案,但我偶然发现了同样的问题并找到了解决方案,并认为我应该将其发布以供将来参考。不止一个人因同一件事而头痛是没有意义的:)

    首先,您必须对希望 UIColor 移入的任何视图进行子类化。所以在这种情况下,UITableViewCell

    ..最后,在drawRect: 方法中使用此代码来移动原点。你就完成了!

    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);
    CGSize phase = CGSizeMake(0, self.bounds.size.height); // CHANGE THESE VALUES TO WHATEVER X/Y SHIFT YOU NEED
    CGContextSetPatternPhase(context, phase);
    
    CGColorRef color = self.backgroundColor.CGColor;
    CGContextSetFillColorWithColor(context, color);
    CGContextFillRect(context, self.bounds);
    
    CGContextRestoreGState(context);
    

    移位通过将原点替换为“相位”的宽度和高度值来实现。

    希望对您有所帮助! (别忘了[super drawRect:]!)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-05
      • 2012-02-16
      • 1970-01-01
      • 2011-06-01
      • 2011-08-10
      • 1970-01-01
      • 2021-11-10
      • 2020-03-09
      相关资源
      最近更新 更多