第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何為UILabel的文本(而不是背景)添加漸變?

如何為UILabel的文本(而不是背景)添加漸變?

慕婉清6462132 2019-12-21 13:20:03
嘿,我希望能夠?qū)ξ沂煜さ腃GGradient的UILabel中的文本進(jìn)行漸變填充,但是我不知道如何在UILabel的文本中使用它我在Google上找到了它,但我無(wú)法使其正常工作http://silverity.livejournal.com/26436.html
查看完整描述

3 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊

Brad Larson和Bach都提供了非常有用的答案。第二個(gè)對(duì)我有用,但是需要預(yù)先顯示圖像。我想要更具動(dòng)態(tài)性的東西,所以我將兩種解決方案結(jié)合在一起:


在UIImage上繪制所需的漸變

使用UIImage設(shè)置顏色圖案

結(jié)果有效,在下面的屏幕截圖中,您也可以看到一些希臘字符也很好地渲染。(我還在漸變頂部添加了筆觸和陰影)


iOS風(fēng)格化UILabel,大棕狐貍


這是我標(biāo)簽的自定義init方法,以及在UIImage上呈現(xiàn)漸變的方法(我從博客文章中獲得的該功能的部分代碼,現(xiàn)在找不到它可以引用它):


- (id)initWithFrame:(CGRect)frame text:(NSString *)aText {

    self = [super initWithFrame:frame];

    if (self) {

        self.backgroundColor = [UIColor clearColor];

        self.text = aText;


        self.textColor = [UIColor colorWithPatternImage:[self gradientImage]];


    }

    return self;

}


- (UIImage *)gradientImage

{

    CGSize textSize = [self.text sizeWithFont:self.font];

    CGFloat width = textSize.width;         // max 1024 due to Core Graphics limitations

    CGFloat height = textSize.height;       // max 1024 due to Core Graphics limitations


    // create a new bitmap image context

    UIGraphicsBeginImageContext(CGSizeMake(width, height));


    // get context

    CGContextRef context = UIGraphicsGetCurrentContext();       


    // push context to make it current (need to do this manually because we are not drawing in a UIView)

    UIGraphicsPushContext(context);                             


    //draw gradient    

    CGGradientRef glossGradient;

    CGColorSpaceRef rgbColorspace;

    size_t num_locations = 2;

    CGFloat locations[2] = { 0.0, 1.0 };

    CGFloat components[8] = { 0.0, 1.0, 1.0, 1.0,  // Start color

                            1.0, 1.0, 0.0, 1.0 }; // End color

    rgbColorspace = CGColorSpaceCreateDeviceRGB();

    glossGradient = CGGradientCreateWithColorComponents(rgbColorspace, components, locations, num_locations);

    CGPoint topCenter = CGPointMake(0, 0);

    CGPoint bottomCenter = CGPointMake(0, textSize.height);

    CGContextDrawLinearGradient(context, glossGradient, topCenter, bottomCenter, 0);


    CGGradientRelease(glossGradient);

    CGColorSpaceRelease(rgbColorspace); 


    // pop context 

    UIGraphicsPopContext();                             


    // get a UIImage from the image context

    UIImage *gradientImage = UIGraphicsGetImageFromCurrentImageContext();


    // clean up drawing environment

    UIGraphicsEndImageContext();


    return  gradientImage;

}

我將嘗試完成該UILabel子類并將其發(fā)布。


查看完整回答
反對(duì) 回復(fù) 2019-12-21
?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊

我在尋找解決方案,而DotSlashSlash的答案中隱藏了一個(gè)答案!


為了完整起見(jiàn),答案和最簡(jiǎn)單的解決方案是:


UIImage *myGradient = [UIImage imageNamed:@"textGradient.png"];

myLabel.textColor   = [UIColor colorWithPatternImage:myGradient];


查看完整回答
反對(duì) 回復(fù) 2019-12-21
  • 3 回答
  • 0 關(guān)注
  • 1127 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)