Vraag iPhone iOS hoe een lineair verloop toevoegen aan een UIButton onder de tekst of afbeelding van de knop?


Ik ben bezig met het maken van fraai ogende UI-knoppen door een lineair verloop toe te voegen aan de knop. Ik weet echter niet zeker bij welke index ik het verloop moet toevoegen. De code die ik momenteel heb, plaatst het verloop over de afbeelding / tekst.

Hoe kan ik een sublaag in een UIButton invoegen onder de tekst / afbeelding-sublaag? Het is belangrijk voor mij om de tekst en het beeld van een knop zichtbaar te houden!

+(void)addLinearGradientToView:(UIView*)view TopColor:(UIColor*)topColor BottomColor:(UIColor*)bottomColor
{
    for(CALayer* layer in view.layer.sublayers)
    {
        if ([layer isKindOfClass:[CAGradientLayer class]])
        {
            [layer removeFromSuperlayer];
        }
    }
    CAGradientLayer* gradientLayer = [CAGradientLayer layer];

    gradientLayer.startPoint = CGPointMake(0.5, 0);
    gradientLayer.endPoint = CGPointMake(0.5,1);
    gradientLayer.frame = view.bounds;
    gradientLayer.colors = [NSArray arrayWithObjects:(id)[topColor CGColor], (id)[bottomColor CGColor], nil];
    //    [view.layer addSublayer:gradientLayer];
    if(view.layer.sublayers.count>0)
    {
        [view.layer insertSublayer:gradientLayer atIndex:view.layer.sublayers.count-2];
    }else {
        [view.layer addSublayer:gradientLayer];
    }
}

12
2018-05-14 14:15


oorsprong


antwoorden:


Voeg het toe aan de laag van je eigen knop:

CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = customButton.layer.bounds;

gradientLayer.colors = [NSArray arrayWithObjects:
                        (id)[UIColor colorWithWhite:1.0f alpha:0.1f].CGColor,
                        (id)[UIColor colorWithWhite:0.4f alpha:0.5f].CGColor,
                        nil];

gradientLayer.locations = [NSArray arrayWithObjects:
                           [NSNumber numberWithFloat:0.0f],
                           [NSNumber numberWithFloat:1.0f],
                           nil];

gradientLayer.cornerRadius = customButton.layer.cornerRadius;
[customButton.layer addSublayer:gradientLayer];

waar customButton is jouw maat UIButton.


45
2018-05-14 16:59



Voor wat u probeert te bereiken, altijd invoegen op index 0.

ik schreef een artikel over dit soort dingen dat je misschien interessant vindt.


9
2018-05-14 16:46



Hier is de code om dit te bereiken

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = <#View Variable Name#>.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)([UIColor colorWithRed:0.337 green:0.596 blue:1.000 alpha:1.000].CGColor),(id)([UIColor colorWithRed:0.757 green:0.459 blue:1.000 alpha:1.000].CGColor),(id)([UIColor colorWithRed:0.310 green:0.835 blue:1.000 alpha:1.000].CGColor),nil];
gradient.startPoint = CGPointMake(0.5,0.0);
gradient.endPoint = CGPointMake(0.5,1.0);
[<#View Variable name#>.layer insertSublayer:gradient atIndex:0];

Ik heb deze tool waarmee je eenvoudig je kleuren kunt selecteren en de code automatisch uitvoert voor het verloop. Heel handig, ik gebruik het elke dag      itunes.apple.com/gb/app/gradient-creator/id1031070259?mt=12


0
2017-09-08 08:47