2012-05-14 21 views
12

मैं बटन पर रैखिक ढाल जोड़कर फैंसी दिखने वाले UIbuttons बनाने पर काम कर रहा हूं। हालांकि मुझे यकीन नहीं है कि मुझे किस सूचकांक में ढाल जोड़ने की आवश्यकता है। कोड जो मैंने वर्तमान में छवि/पाठ पर ढाल रखा है।आईफोन आईओएस बटन के पाठ या छवि के नीचे यूआई बटन पर रैखिक ढाल कैसे जोड़ सकता है?

मैं टेक्स्ट/छवि sublayer के तहत UIButton में एक उपन्यास कैसे डाल सकता हूं? मेरे लिए पाठ और छवि के दृश्य को रखने के लिए मेरे लिए महत्वपूर्ण है!

+(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]; 
    } 
} 
+0

मैंने इस तरह की चीज करने के लिए कुछ नमूना कोड लिखा है: https://github.com/kristopherjohnson/gradientbuttons –

उत्तर

44

अपने कस्टम बटन की परत के लिए यह करें:

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]; 

जहां customButton अपने कस्टम UIButton है।

+1

यह समाधान 100% काम नहीं कर रहा है। बटन ढाल प्राप्त करते हैं, लेकिन यह नीचे कोनों पर बहती है। देखें: https://www.dropbox.com/s/mguy6owuayjgxvc/Screen%20Shot%202012-09-03%20at%2017.50.30.png यह कैसे तय किया जा सकता है? – murze

+2

@murze आपके बटन या उसके कंटेनर व्यू की तरह दिखता है क्लिप को खोने के लिए ToBounds = YES प्रॉपर्टी सेट की जा रही है। यह आपके द्वारा अनुभव किए जा रहे ओवरफ़्लो को क्लिप करेगा। – Luke

+1

[gradientLayer.masksToBounds = हाँ]; <- ऐसा करें – stackOverFlew

9

के लिए आप क्या हासिल करने की कोशिश कर रहे हैं, हमेशा सूचकांक 0.

पर डालने मैं हाल ही में बात की इस तरह के बारे में an article लिखा आपको दिलचस्प लग सकता है।

+0

धन्यवाद! ग्रेडियेंट परत जोड़ने के बाद मेरा टेक्स्ट गायब था, लेकिन केवल आईओएस 6 में, आईओएस 7 ने अभी भी टेक्स्ट दिखाया था। इसे सम्मिलित करने के बाद इसे अब दोनों के लिए काम करता है। – KevinS

0

यहाँ इस

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]; 

प्राप्त करने के लिए कोड मैं इस उपकरण का यह अपने रंग का चयन करने के लिए आसान और स्वचालित रूप से उत्पादन ढाल के लिए कोड है कि मिल गया है। बहुत आसान मैं इसे रोजाना itunes.apple.com/gb/app/gradient-creator/id1031070259?mt=12