SORU
27 HAZİRAN 2011, PAZARTESİ


UİButton için bir arka plan görüntüsü olarak kullanmak için bir UİColor bir Uİİmage oluşturma

Böyle renkli bir görüntü yaratıyorum:

CGRect rect = CGRectMake(0, 0, 1, 1);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context,
                                   [[UIColor redColor] CGColor]);
//  [[UIColor colorWithRed:222./255 green:227./255 blue: 229./255 alpha:1] CGColor]) ;
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

ve sonra bir düğmeye arka plan görüntüsü olarak kullanabilirsiniz:

[resultButton setBackgroundImage:img forState:UIControlStateNormal];

Bu büyük bir RGB renk kullanmak istiyorum, ancak redColor açıklamalı satırında gösterildiği gibi) kullanarak çalışır. RGB renk kullanıyorum, düğmeler, arka plan değişmiş değil.

Neyi kaçırıyorum?

CEVAP
6 EYLÜL 2013, Cuma


Değerli sınıf içinde bu yöntem ile UIImage uzatma/kategori yapmak.

Swift

extension UIImage {
    class func imageWithColor(color: UIColor) -> UIImage {
        let rect = CGRectMake(0.0, 0.0, 1.0, 1.0)
        UIGraphicsBeginImageContext(rect.size)
        let context = UIGraphicsGetCurrentContext()

        CGContextSetFillColorWithColor(context, color.CGColor)
        CGContextFillRect(context, rect)

        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return image
    }
}

Objective-C

  (UIImage *)imageWithColor:(UIColor *)color
{
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}

Swift, bu uzantı, paketteki tüm sınıflar için varsayılan olarak kullanılabilir. İle Objective-C, ihtiyacı olan herhangi bir sınıfa kategorisi alma.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fuse

    Fuse

    21 Kasım 2005
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008
  • vgeller1

    vgeller1

    22 Kasım 2009