iPhone, как уменьшить размер шрифта в кнопках таблицы действий?

Я хочу уменьшить размер шрифта для текста на кнопках моего листа действий, поскольку мой текст длиннее ширины.

Как уменьшить размер шрифта?

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

Мне нужен пример.

РЕДАКТИРОВАТЬ: Я добился небольшого прогресса, но фактическая кнопка не отображается, но вы можете видеть, как она работает с изменением текста кнопки, когда вы нажимаете на нее.

        UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle:@"Date Picker" 
                                                          delegate:self
                                                 cancelButtonTitle:@"Cancel"
                                            destructiveButtonTitle:nil
                                                 otherButtonTitles:@"OK",nil];    

        CGRect frame = CGRectMake(100.0, 80.0, 100.0, 40.0);

        UIButton *pickerView = [[UIButton alloc] initWithFrame:frame];

        [pickerView setTitle:@"FRED" forState:UIControlStateNormal];

        [pickerView setTitle:@"Go Back" forState:UIControlStateNormal];
        [pickerView setTitleColor:[UIColor blackColor] forState:UIControlEventTouchDown];
        pickerView.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
        pickerView.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
        //[removeButton addTarget:self action:@selector(buttonEvent:) forControlEvents:UIControlEventTouchDown];
        [pickerView setBackgroundColor:[UIColor blueColor]];


        [menu addSubview:pickerView];
        [menu showInView:self.view];        

        [pickerView release];
        [menu release];  

person Jules    schedule 05.10.2010    source источник


Ответы (1)


Вы можете сделать это напрямую, но обратите внимание, что кнопки таблицы действий не являются стандартными UIButton, а представляют собой отдельный особый подкласс частного элемента управления. По этой причине, когда мне нужно настроить лист действий, я добавляю собственное настраиваемое подвид в UIActionSheet, а затем меняю размер листа, чтобы он соответствовал. Обратной стороной является то, что для соответствия внешнему виду мне нужен фон с настраиваемым изображением кнопки. Я адаптировал (но не проверял компилятор) этот пример из Установка UIDatePicker в UIActionSheet. Вместо средства выбора просто добавьте созданный в xib UIView.

UIDatePicker *pickerView = [[UIDatePicker alloc] init];
pickerView.datePickerMode = UIDatePickerModeDate;
[myUIActionSheet addSubview:pickerView];
[myUIActionSheet showInView:self.view];        
[myUIActionSheet setBounds:CGRectMake(0,0,320, myUIActionSheet.bounds.size.height + pickerView.bounds.size.height)];

CGRect pickerRect = pickerView.bounds;
pickerRect.origin.y = - pickerView.bounds.size.height; //you may need to change this offset
pickerView.bounds = pickerRect;

[pickerView release];
[myUIActionSheet release];

РЕДАКТИРОВАТЬ: Чтобы включить подвид из xib, добавьте UIView на верхний уровень xib и подключите его к свойству UIView в вашем контроллере, как если бы это был обычный компонент интерфейса. Теперь он будет доступен в вашем контроллере.

alt text

Вы также можете обычным образом связать действия кнопок вместо использования обратного вызова листа действий. Вам нужно будет закрыть лист действий после нажатия на что-то вроде [myUIActionSheet.dismissWithClickedButtonIndex:0 animated:YES]; Я думаю, что отклонение его как модального также будет работать, IIRC.

person Peter DeWeese    schedule 05.10.2010
comment
См. Мою правку выше. Добавление xib звучит здорово, вы можете дать мне код для этого? А как насчет того, чтобы связать кнопки и убедиться, что под пером на листе действий ничего нет? - person Jules; 05.10.2010
comment
Я нашел этот stackoverflow.com/ questions / 2616047 /, но ActionSheetController отсутствует - person Jules; 05.10.2010
comment
Питер, ты можешь предложить еще помощь? - person Jules; 05.10.2010
comment
Извините, у меня был напряженный день! Я добавил несколько деталей. Как только вы используете это представление, вы можете обращаться с ним так же, как с вашим основным представлением контроллера, в том, что касается действий и тому подобного. Шаг смещения pickerRect.origin.y должен иметь возможность разместить представление в листе действий, но я сделал это по памяти, поэтому вам, возможно, придется его настроить. Сообщите мне, как это происходит! - person Peter DeWeese; 06.10.2010
comment
А что касается кнопки, попробуйте разместить ее на 0,0, чтобы увидеть, где она находится, а затем сместите ее, как только увидите. Кроме того, вам нужно будет установить границы меню, как я сделал в примере. - person Peter DeWeese; 06.10.2010