Растяжение изображения приведет к уродливому рендерингу, особенно если у вас очень длинное слово.
Я бы обработал так:
Создать эту иерархию:
- UIView theView
-- UIView imagesView
--- UIImageView startBackgroundImage
--- UIImageView endBackgroundImage
-- UILabel theLabel
theView будет видом, содержащим вашу метку и фоновые изображения, theLabel будет содержать саму метку, а imagesView содержит все необходимые вам изображения.
Итак, сначала мы установим текст метки и получим размер строки:
theLabel.text = @"Food";
theLabel.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"content.png"]];
CGSize textSize = [[theLabel text] sizeWithFont:[theLabel font]];
Наконец, мы установим размер ViewView (у imagesView будет тот же самый размер) и положение startBackgroundImage и endBackgroundImage.
int height = startBackgroundImage.image.size.height;
int startBackgroundImageWidth = startBackgroundImage.image.size.width;
int endBackgroundImageWidth = endBackgroundImage.image.size.width;
theView.frame = CGRectMake(xYouWant,yYoutWant,textSize.width+startBackgroundImageWidth+endBackgroundImageWidth,height);
startBackgroundImage.frame = CGRectMake(0,0,startBackgroundImage.frame.width,startBackgroundImage.frame.height);
endBackgroundImage.frame = CGRectMake(textSize.width+endBackgroundImageWidth,0,endBackgroundImage.frame.width,endBackgroundImage.frame.height);
Не могу загрузить изображение, поэтому я постараюсь описать:
startBackgroundImage будет содержать левое изображение (округлено)
endBackgroundImage будет содержать право изображения (округлено)
И content.png будет содержать изображение шириной в несколько пикселей, которое будет использоваться в качестве шаблона.