2015-07-02 6 views
5

У меня есть ярлык полной ширины, с динамическим текстом, так что это может быть два символа или десять. Мне нужно отобразить изображение в строке слева, всегда на 10 пикселей от первой буквы. См. Пример ниже.Центр изображения и текста inline на iOS

Short text example

Large text example

На данный момент, я просто поставить полную ширину этикетки и во время выполнения, я измерить ширину текста с boundingRectWithSize: методом, и корректировать свои ограничения изображения программными средствами.

У вас есть хорошая идея построить такой интерфейс без измерения ширины текста вручную?

+0

Посмотрите '+ (NSAttributedString * ненулевая) attributedStringWithAttachment: (NSTextAttachment * ненулевая) attachment' – Petar

+0

Objective-C или быстры ? –

+0

Почему бы не использовать автоматическую компоновку? – Lorenzo

ответ

8

Цель - C

Вы можете добавить изображение в качестве текстового приложения.

NSTextAttachment *attachment = [[NSTextAttachment alloc] init]; 
UIImage *imageTest=[UIImage imageNamed:@"arrow.png"]; 
attachment.image = imageTest; 
NSMutableAttributedString *myString= [[NSMutableAttributedString alloc] initWithString:@"My label text "]; 
NSMutableAttributedString *myStringWithArrow = [[NSMutableAttributedString alloc]initWithAttributedString:[NSAttributedString attributedStringWithAttachment:attachment]]; 
[myStringWithArrow appendAttributedString:myString]; 
yourLabel.attributedText = myStringWithArrow; 

Swift

var attachment = NSTextAttachment() 
var imageTest = UIImage(named:"arrow.png") 
attachment.image = imageTest 
var myString = NSMutableAttributedString(string: "My label text ") 
var myStringWithArrow = NSMutableAttributedString(attributedString: NSAttributedString(attachment: attachment)) 
myStringWithArrow.appendAttributedString(myString) 
lblAttributed.attributedText = myStringWithArrow 

Выход:

enter image description here

+0

Ничего себе, это просто отлично, вот что я ищу! На самом деле мое приложение в Swift, но мне все равно, у меня есть концепция. Большое спасибо! –

+0

@hagile Спасибо! Я постараюсь быстро. –

+0

@AshishKakkad Я просто добавил версию Swift, не волнуйтесь. Благодаря! –

1

@ ответ Ашиша-kakkad является совершенным, но если вам не нужно с точностью до пиксела изображения вы можете использовать символ Unicode :

enter image description here

[self.button1 setTitle:@"\u27A4 Button" forState:UIControlStateNormal]; 

Большинство символов Unicode с кодами можно найти здесь http://unicode-table.com/

+0

Спасибо, на самом деле мне действительно нужно включить экземпляр 'IImage', но это хороший момент. –

+0

Ух, никогда не думай об этом !! Удивительно. – Hemang

Смежные вопросы