2013-11-18 3 views
1

Я пытаюсь объединить пространство экрана в своем приложении iPhone, помещая текст ярлыка внутри UITextField, который будет неотредактирован. Он скажет пользователю, что помещать в текстовое поле. Вот пример приложения, которое делает именно то, что я хочу сделать.Добавить UILabel в левой части UITextField

enter image description here

Я сделал свое исследование и нашел некоторый код для имитации это в некоторой степени.

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 80, 40)]; 
label.text= @"Exerise Name:"; 
label.font = [UIFont fontWithName:@"Arial" size:12]; 
[label setTextColor:[UIColor blueColor]]; 
_txtExerciseName.leftViewMode = UITextFieldViewModeAlways; 
_txtExerciseName.leftView = label; 

[self.view addSubview:_txtExerciseName]; 

Это внутри viewDidLoad. Дает код что-то вроде этого:

enter image description here

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

+0

Имея как метки и заполнителя является излишним. Нет метки для этикетки. Просто используйте место для текстового поля. – rmaddy

+0

У вас всегда может быть только 3 элемента: фоновое изображение, метка и текстовое поле. Затем вы можете настроить каждый отдельно и не нужно слишком сильно манипулировать свойствами UITextView. – bachonk

+0

Мне кажется, что вы нашли именно то, что вам нужно. Я не знал о представлениях оверлей, UITextFieldViewModeAlways или свойства leftView UITextFields, но, глядя на документы, похоже, они точно поддерживают то, что вам нужно. Внешний вид UIElements сильно изменился между iOS 6 и iOS 7. Я бы пообещал, что внешний вид, который вы разместили для поля «Exerise Name» (sic), находится в приложении, созданном для iOS 7 и запущенном под управлением iOS 7, и на экране примера от SunTrust - приложение iOS 6 (даже если оно работает под iOS 7.) Попробуйте сыграть с свойством borderStyle. –

ответ

1

, который вы пытаетесь имитировать эффект почти наверняка сделано:

  • Создание то, что выглядит как текстовое поле изображения в приложение для редактирования изображений, импортировать в проект - вы также можете сделать это с помощью срезов, чтобы вы могли создать любой фон поля ширины.
  • Поместите вышеупомянутое изображение, где хотите метку и текстовое поле
  • Поместите без полей UILabel и UITextField без полей в соответствующее место над изображением, которое вы только что сбросили.

Это должно быть сделано. Никаких изменений кода не требуется.

+0

Немного удивлен, что вы не отметили меня как правильный, ни другой ответ, и, похоже, не проголосовали за какие-либо комментарии. Не помогло ли наше предложение? – itripn

2

Я видел действительно крутое решение этой проблемы. Текст заполнитель перемещается в верхнюю часть текстового поля, когда клавиатура поднимается/становится первым ответчиком, а затем исчезает, когда текстовое поле подает в отставку первого ответчика.

Реализация

+0

[Вот проект] (https://github.com/meismyles/FloatLabelFields), который в настоящее время поддерживается, что делает этот интерфейс очень простым в реализации (не мой). – Matt

+0

Спасибо, я добавил ссылку на этот проект как реализацию Swift – Kevin

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