чтобы решить проблему с названием, я получил вдохновение из этого поста: Пользовательский 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.
Это сработало для меня, но я открыт для новых идей !!
Увидимся!