Mus*_*afa 5 iphone shadow uilabel ipad ios
我想将内阴影应用于UILabel.我有一个解决方案,但它还不够好.谁有更好的解决方案?
// UILabel subclass
- (void) drawTextInRect:(CGRect)rect {
CGSize myShadowOffset = CGSizeMake(0, 2);
float myColorValues[] = {255, 0, 0, 1};
CGContextRef myContext = UIGraphicsGetCurrentContext();
CGContextSaveGState(myContext);
CGColorSpaceRef myColorSpace = CGColorSpaceCreateDeviceRGB();
CGColorRef myColor = CGColorCreate(myColorSpace, myColorValues);
CGContextSetShadowWithColor (myContext, myShadowOffset, 5, myColor);
CGContextSetBlendMode(myContext, kCGBlendModeLighten);
[super drawTextInRect:rect];
CGColorRelease(myColor);
CGColorSpaceRelease(myColorSpace);
CGContextRestoreGState(myContext);
}
Run Code Online (Sandbox Code Playgroud)
我熟悉UILabel的图层属性,但shadow offset给我们一个外阴影,而不是内阴影(除非我遗漏了什么).
Nav*_*Nav 22
借用鲁本上面的答案,如果你做反向即.设置您的文本颜色等于您的背景颜色(低alpha),然后将阴影设置为更强的颜色,它创建一个体面的插入效果.这就是我的意思(注意:我的视图背景为白色):
cell.textLabel.textColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.5];
cell.textLabel.shadowColor = [UIColor darkGrayColor];
cell.textLabel.shadowOffset = CGSizeMake(-1.0,-1.0);
[cell.textLabel setText:@"Welcome to MyApp!"];
Run Code Online (Sandbox Code Playgroud)
这是输出

这可能只适用于非常浅的背景,因为我怀疑它会在较暗的背景上产生不需要的叠加.
你可以改变shadowOffset来改变光的方向.
我尝试这样做,但最终选择使用默认值shadowOffset并使用 为shadowColor文本提供内部阴影效果。在小文本中,它可以为您提供良好的内阴影效果。例如,如果您有灰色背景并将白色应用于阴影,则您将获得可接受的内部阴影效果。
有时,最好使用图形工具设计这些文本,并根据需要制作本地化副本。
| 归档时间: |
|
| 查看次数: |
13043 次 |
| 最近记录: |