2016-08-10 3 views
0

Я пытаюсь реализовать изображение, а также заголовок на UIButton. Размер UIButton равен 86 x 96. Мне нужно встроить изображение размером 86 x 76 сверху и заголовок размером 86 x 20 чуть ниже изображения.Изображение и название для UIbutton не задано

Код

UIButton *generalButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[generalButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
generalButton.titleLabel.font = [UIFont fontWithName:@"Arial" size:13]; 
[generalButton setImageEdgeInsets:UIEdgeInsetsMake(0,0,20,0)]; 
[generalButton setTitleEdgeInsets:UIEdgeInsetsMake(76,0,0,0)]; 
generalButton.frame = CGRectMake(32,20,86,96); 
[generalButton setImage:[UIImage imageNamed:@"flower_icon.png"] forState:UIControlStateNormal]; 
[generalButton setTitle:@"Flower" forState:UIControlStateNormal]; 
[self addSubview:generalButton]; 

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

Пожалуйста, помогите

+0

Вы устанавливаете setTitleColor так же, как и цвет, и каков цвет вашей задней поверхности для кнопки? пожалуйста, измените цвет названия и проверьте его. И еще одно значение проверки вставки для изображения и названия может быть названо, если изображение будет отображаться вне кадра. –

+0

Цвет фона для кнопки темно-серый Цвет – John

+0

Пожалуйста, проверьте мой ответ, как показано ниже. Я разместил его. Проверьте, работает он или нет. :) –

ответ

0

попробовать этот код:

UIButton *generalButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[generalButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
generalButton.titleLabel.font = [UIFont fontWithName:@"Arial" size:13]; 
[generalButton setImageEdgeInsets:UIEdgeInsetsMake(0,0,20,0)]; 
[generalButton setTitleEdgeInsets:UIEdgeInsetsMake(30,-50,0,0)]; 
generalButton.frame = CGRectMake(32,20,86,96); 
[generalButton setImage:[UIImage imageNamed:@"RepresentativeIcon.png"] forState:UIControlStateNormal]; 
[generalButton setTitle:@"Flower" forState:UIControlStateNormal]; 
[self.view addSubview:generalButton]; 
+0

Это то же самое, более того, используя «setBackgroundImage» будет охватывать всю кнопку с этим изображением. – John

+0

попробуйте этот код, его работа отлично –

0

Пожалуйста, попробуйте этот код:

UIButton *generalButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [generalButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 
    generalButton.titleLabel.font = [UIFont fontWithName:@"Arial" size:13]; 
    [generalButton setImageEdgeInsets:UIEdgeInsetsMake(20,22,20,0)]; 
    [generalButton setTitleEdgeInsets:UIEdgeInsetsMake(50,-30,0,0)]; 
    generalButton.frame = CGRectMake(32,20,86,96); 
    [generalButton setBackgroundColor:[UIColor yellowColor]]; 
    [generalButton setImage:[UIImage imageNamed:@"Facebook"] forState:UIControlStateNormal]; 
    [generalButton setTitle:@"Flower" forState:UIControlStateNormal]; 
    [self.view addSubview:generalButton]; 

Примечание:

[generalButton setImageEdgeInsets:UIEdgeInsetsMake(20,22,20,0)]; 
[generalButton setTitleEdgeInsets:UIEdgeInsetsMake(50,-30,0,0)]; 

Эти две линии выполняют главную роль перестановка вашего т itle и image так задают все параметры в соответствии с вашей высотой изображения & ширина и длина заголовка.

В этом коде я меняю имя изображения, как и у меня, а также изменил цвет кнопки, поэтому, пожалуйста, измените данные в соответствии с вашими данными.

Надеюсь, это вам поможет.

+0

Мне нужно изображение размером 86 (ширина) x 76 (высота) сверху. Поэтому я установил вставку Edge для изображения (0,0,20 (внизу), 0). И чуть ниже изображения мне нужно, чтобы titleLabel имел размер 86 ​​(ширина) x 20 (высота), поэтому imageEdgeInset для заголовка (76 (сверху, так как он покрыт изображением), 0,0,0). – John

+0

вы обнаружите какую-либо ошибку при установке кросс-вставки в код выше? – John

+0

Нет Я не нашел ошибок. Здесь все, что вам нужно сыграть со вставкой только другого кода, все правильно. –

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