Как растянуть изображение, чтобы заполнить ширину метки, заданную в Background в UILabel? - PullRequest
4 голосов
/ 26 декабря 2011

У меня есть простое приложение на основе View. Я взял только UILabel на это.

Ниже приведен мой код в viewDidLoad:

lblBack.textColor = [UIColor blueColor];

UIImage *img = [UIImage imageNamed:@"cn3.png"];
lblBack.backgroundColor = [UIColor colorWithPatternImage:img];
lblBack.text = @"Hello World!!!...";

//    UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
//    
//    CGRect rect = CGRectMake(0, 0, lblBack.frame.size.width, lblBack.frame.size.height);
//    [imgView setFrame:rect];
//    NSLog(@"Rect : %@",NSStringFromCGRect(rect));
//    [img drawInRect:rect];
//    imgView.contentMode = UIViewContentModeScaleAspectFill;
//    imgView.contentMode = UIViewContentModeScaleAspectFit;
//    imgView.contentMode = UIViewContentModeScaleToFill;
//    [lblBack addSubview:imgView];

Комментарии показывают некоторые вещи, которые я пробовал. Я получаю следующий вывод:

enter image description here

На этом одном изображении повторяется 3 раза. Но я хочу, чтобы изображение было растянуто до ширины метки.

Я ссылался на некоторые из предыдущих ссылок, которые показывают мне, чтобы добавить изображение в фоновом режиме и использовать clearColor для UILabel. Также рассматривается пример добавления пользовательского представления в фоновом режиме. Но все это я не хочу использовать, если у меня нет других решений ...

Я просто хочу выполнить все только на UILabel .... нет другого элемента управления, кроме UIImage или UIImageView, который я хочу использовать ..

Ответы [ 2 ]

20 голосов
/ 26 декабря 2011

Дирен, попробуйте этот код:

    UIImage *img = [UIImage imageNamed:@"cab.png"];
    CGSize imgSize = testLabel.frame.size;

    UIGraphicsBeginImageContext( imgSize );
    [img drawInRect:CGRectMake(0,0,imgSize.width,imgSize.height)];
    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    testLabel.backgroundColor = [UIColor colorWithPatternImage:newImage];

Я проверил этот код.

1 голос
/ 21 июля 2016

Портируя ответ Маулика на Swift 2.2, вы получаете следующий код:

var img: UIImage = UIImage(named: "cabImage")!
var imgSize: CGSize = testLabel.frame.size

UIGraphicsBeginImageContext(imgSize)

img.drawInRect(CGRectMake(0, 0, imgSize.width, imgSize.height))
var newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()

UIGraphicsEndImageContext();

testLabel.backgroundColor = UIColor(patternImage: newImage)

Лично проверено на работоспособность!

...