заголовок и кнопка по центру в пользовательском UIAlertView iOS размера - PullRequest
0 голосов
/ 03 августа 2011

Я работаю с alertViews, чтобы загружать в них различные объекты, такие как textFields и другие. С textFields нет проблем. Я успешно добавил UIPickerView в качестве подпредставления моего alertView и изменил размер файла alertView.frame, чтобы правильно удерживать pickerView, но тогда заголовок и кнопка в alertView не центрируются. Я пытался использовать многие из опций [alertView… function…], но ни одна из них не работает с этой проблемой. Это выглядит плохо в обычном размере alertView. Есть предложения?

Спасибо, ребята!

1 Ответ

0 голосов
/ 05 августа 2011

чтобы решить проблему с названием, я получил вдохновение из этого поста: Пользовательский AlertView с фоном

Прежде всего, когда приложение представляет alertView, я вызвал NSLog, чтобы получить:

  • ширина (моего подпредставления) pickerView
  • ширина _titleLabel
  • исходное положение _titleLabel (MinX и MinY)

затем я изменил размер рамки _titleLabel и это было все! textAlignment по умолчанию равно Center, поэтому все, что мне нужно было сделать, это изменить размер рамки метки. Другой возможный метод заключается в использовании

[theTitle CGAffineTransformMakeTranslation(newXValue, 0]; 

Значение Y равно 0, потому что я не хотел, чтобы он двигался вертикально. Но описанный метод для меня чище.

Итак, что я добавил в метод, который создает и представляет мой alertView, было так:

ПРИМЕЧАНИЕ: этот код ДОЛЖЕН использоваться до добавления какого-либо дополнительного представления в alertView!

//... alertView creation and display
//create a title object to edit titleLable properties
    UILabel *theTitle = [pickers valueForKey:@"_titleLabel"];
        // set frame for titleLabel to begin where it currently begins in both X and Y, set its width to the width of th e picker +/- the difference in X in case they don't have the same MinX value, and set the height it already has
    theTitle.frame = CGRectMake(CGRectGetMinX(theTitle.frame), CGRectGetMinY(theTitle.frame), CGRectGetWidth(pkPais.frame)+6, CGRectGetHeight(theTitle.frame));

//...add subviews and set its frames (in my case, a pickerView)

что касается кнопки, я обнаружил в файле UIAlertView.h, что кнопки нельзя настраивать ... поэтому, если у кого-то есть какие-либо советы по этому вопросу, любая помощь будет оценена.

надеюсь, это поможет кому-то еще!

ОБНОВЛЕНИЕ: Как я уже говорил, Apple сказала, что кнопки в alertViews нельзя настраивать, поэтому есть две альтернативы: создать пользовательскую кнопку и добавить ее в качестве подпредставления или вообще не иметь кнопки. В моем случае я сделал это и назвал [myAlertView dismissWithClickedButtonIndex:-1 animated:YES] в didSelectRow...inComponent части кода pickerView. Это сработало для меня, но я открыт для новых идей !!

Увидимся!

...