UIB кнопка с изображением и текстом - PullRequest
2 голосов
/ 08 февраля 2011

Я пытаюсь создать кнопку, которая в основном имитирует кнопки, которые видны на домашнем экране iphone - на нем изображение расположено вертикально над текстом, и оба они являются частью кнопки и ведут себя соответствующим образом (тусклые, кликабельные и т. Д.)когда выделено

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

Использование свойства фонового изображения не работает, потому что я хочу изображение над текстом - область за текстом должна быть прозрачной.Я ДЕЙСТВИТЕЛЬНО предпочел бы решение для программирования вместо того, чтобы входить и редактировать все мои картины.

Ответы [ 4 ]

3 голосов
/ 08 февраля 2011

Создайте подкласс UIView, и используйте UIImageView и UILabel в качестве подвидов, и расположите их соответствующим образом, используя код.

Тогда вы будете иметь UIImageView и UILabel в качестве свойств, чтобы вы могли получить к ним доступ, например:

myCustomButton.imageView.image = [UIImage imageNamed:@"..."];
myCustomButton.textLabel.text = @"...";

Или вы можете найти сторонний пользовательский UIView, в интернете на github или что-то в этом роде.

1 голос
/ 26 ноября 2012

сделать это:

UIButton *btn_chat = [UIButton buttonWithType:UIButtonTypeCustom];
btn_chat.frame = CGRectMake(40, 50, 100, 30);//CGRectMake(20, 20, 200, 72);
UIImage *image = [UIImage imageNamed:@"chat.png"];
CGSize newSize = CGSizeMake(30, 30);
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();    
UIGraphicsEndImageContext();
[btn_chat setImage:newImage forState:UIControlStateNormal];
btn_chat.imageEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
[btn_chat setTitle:@"Chat" forState:UIControlStateNormal];
btn_chat.titleEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 0);
btn_chat.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
[btn_chat addTarget:self action:@selector(menuSelection:) forControlEvents:UIControlEventTouchUpInside];
[btn_chat setTag:1001];
[self.view addSubview:btn_chat];

и готово :) 1004 *

1 голос
/ 08 февраля 2011

Идея Джонатана хороша, но если вы делаете это только с парой изображений, это не стоит проблем. Вы можете создать UIImage и UILabel, а затем поместить их внутри кнопки UIB в конструкторе интерфейсов.

Тем не менее, всегда полезно узнать о таких мощных функциях, как создание подклассов.

Удачи,

Aurum Aquila

0 голосов
/ 08 февраля 2011

Создайте новый изначально прозрачный растровый контекст рисования, нарисуйте свое изображение вверху и текст внизу.Затем создайте новое изображение из этого контекста рисования и используйте это новое изображение для кнопки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...