2015-03-23 4 views
-1

Я хочу добавить UIButton. Тем не менее, мне нужны следующие элементы, отображаемые на нем.Как добавить текст и изображение в UIButton

enter image description here

В первую очередь мне нужно отобразить какой-нибудь текст, а затем небольшое изображение, а затем снова некоторый текст с последующим изображением, как показано на приведенной выше схеме. Как я могу это сделать?

Кроме того, мне нужно знать, придерживается ли это требований к пользовательским интерфейсам Apple. Если нет, предложите, как я могу это сделать? (Может быть использовать метку вместо этого)

Код

button= [UIButton buttonWithType: UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(210, 285, 100, 18)]; 
//[button setTitle:@"Show View" forState:UIControlStateNormal]; 
[button 
addTarget:self action:@selector(addProjectPressed:) forControlEvents:UIControlEventTouchUpInside]; 

ответ

2

Я хотел бы предложить вам создать собственный UIButton, и добавить UILabels и UIImageViews кнопке.

Обратите внимание, что вы можете добавить столько элементов к кнопке, сколько хотите, поскольку UIButton является подклассом UIView (это возможно только через код, а не через Interface Builder).

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

Кроме того, если эта кнопка разовый только тогда вы можете сделать это на ваш взгляд, контроллер.

Чтобы добавить любой элемент UIButton все, что вам нужно сделать, это:

[myButton addSubview:particularSubview] 

Если у вас есть три метки и два изображения, повторите процесс в пять раз.

Имейте в виду, что вы должны INIT элементы пользовательского интерфейса с рамкой, чтобы они не перекрывали друг друга:

UILabel *ll = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 15, 20)]; 

первый параметр х, второй является у, третий широтно вперед и по высоте.

+0

Может показать мне пример того, как добавить UILable и UIImageView к кнопке. Извините, я новичок. – Illep

+0

Отредактировано, надеюсь, что это поможет сейчас :) – Miknash

+0

Я также использую автоспуск. Если это так, то это выходит из рамки? – Illep

0

Не уверен, что вы можете сделать это с помощью родного UIButton, но вы можете подкласса UIView и создать элементы в этом представлении. Тогда просто переопределить метод - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event, чтобы обнаружить, когда весь вид (иначе кнопка) нажата

другие ответы предполагают, вы также можете создать подкласс UIButton (давая вам выстукивая жест OOB)

+1

Да, вы можете добавлять все виды представлений в UIButton, поскольку он подклассифицирован из UIView. Один конкретный пример - добавить UIActivityIndicator к кнопке :) – Miknash

0

Вы можете использовать новый функция, введенная свойствами Apple, IBDesignable и IBInspectacle (я написал basic tutorial here, но вы можете найти множество образцов on GitHub).

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

+0

Я могу добавить представление к кнопке, как вам было предложено, но затем 'autolayout' вызовет проблему, пытаясь поместить компоненты в нужное положение. – Illep

0

Самый простой способ для создания кнопок с изображением является

-(void)createButton:(NSString *)text atPos:(CGPoint)pos{ 
    UIImage *image=[UIImage imageNamed:@"image.png"]; 

    UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setBackgroundImage:image forState:UIControlStateNormal]; 
    [button setTitle:text forState:UIControlStateNormal]; 

    //it is important to use image size same for the frame if you are setting image in background mode.. 
    [button setFrame:CGRectMake(pos.x, pos.y, image.size.width, image.size.height)]; 
    [self.view addSubview:button]; 
} 

Тогда позвони туда, где вы хотите разместить его.

[self createButton:@"Text" atPos:CGPointMake(0, 0)]; 

Однако вы можете попробовать установить edge inset тоже для решения

См here, чтобы получить некоторое представление.

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

Cheers.

+0

да, но тогда вам нужно создать изображение шириной как кнопку. поскольку вопрос заключается в позиционировании представлений следующим образом: T-I-T-I-T (T-текст, I - изображение). После этого вам придется покинуть белые пробелы, чтобы текст не переопределял изображения. – Miknash

+0

Если он использует изображение, показанное в вопросе, он может легко использовать сплошные цвета и проектировать его с помощью 'Views и Label' – iphonic

+0

Правда, но я думаю, что они используются только, например – Miknash

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