Регулировка высоты сегмента управления в iPhone - PullRequest
4 голосов
/ 08 июня 2009

Хотелось бы узнать, есть ли способ изменить высоту элемента управления сегмента или, возможно, изменить размер шрифта элемента управления?

Спасибо.

Ответы [ 8 ]

8 голосов
/ 22 октября 2010

Я знаю, что это старый, и уже ответил, но для другого поиска;

Я обнаружил, что изменение стиля на BAR в атрибутах в IB - это очень быстрый и приемлемый обходной путь, который использует гораздо более короткую графику.

8 голосов
/ 08 июня 2009

Вы можете сделать это только из кода, а не из InterfaceBuilder. IB пытается остаться в пределах Apple HIG , поэтому не позволяет менять высоту.

Если вы изменяете высоту (фрейм) программным способом, вам также необходимо изменить изображение с помощью setImage: forSegmentAtIndex: так как изображение по умолчанию выглядит ужасно при растяжении.

1 голос
/ 12 марта 2014

К счастью, вы также можете изменить высоту с xib.

Вы также можете сделать это через xib. Просто добавьте сегмент управления в xib. Затем откройте xib в TextEdit. Там вы найдете код

<segmentedControl opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="B99-Tt-vJG">

<rect key="frame" x="222" y="82" width="123" height="44"/>

Здесь вы изменяете высоту с 44 до любой необходимой высоты. Вы можете изменить высоту любого UIConponent, как это. Даже для UIPickerView.

1 голос
/ 06 сентября 2012

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

UISegmentedControl *customeSegment = [[UISegmentedControl alloc] initWithFrame:CGRectMake( 206.0f, 7.0f , 110.0f, 30.0f)];

1 голос
/ 09 января 2012

Когда я попробовал это, я не мог назначить высоту непосредственно. Я должен был сделать это:

- (void)adjustSegControlHeight:(UISegmentedControl*)segControl :(NSInteger)newHeight {

        CGRect segControlFrame = segControl.frame;
        segControlFrame.size.height = newHeight;
        segControl.frame = segControlFrame;
}

Но я все равно решил использовать метод BAR.

0 голосов
/ 05 апреля 2015

Это сработало идеально для меня. И он обновлен для новых версий iOS и Xcode.

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:yoursegmentedControl
                                                              attribute:NSLayoutAttributeHeight
                                                              relatedBy:NSLayoutRelationEqual
                                                                 toItem:nil
                                                              attribute:NSLayoutAttributeNotAnAttribute
                                                             multiplier:1
                                                               constant:THE NEW HEIGHT];
[yoursegmentedControl addConstraint:constraint];
0 голосов
/ 05 октября 2014

Способ сделать это в iOS 7+ с использованием AutoLayout - просто добавить ограничение по высоте к сегментированному элементу управления, а затем обновить фреймы для решения проблем с автоматической компоновкой. Затем IB покажет макет на нужной высоте. Затем можно отредактировать ограничение высоты, чтобы изменить высоту в любое время с IB.

0 голосов
/ 03 июня 2013

В наши дни есть возможность сделать это в конструкторе интерфейсов на случай, если кто-то наткнется на этот вопрос.

1: щелкните сегментированный элемент управления в IB 2: в виде сетки найдите элемент управления «булавка» в правом нижнем углу. 3: нажмите «Высота штифта» 4: открыть инспектор размера в области утилит (теперь у вас будет ограничение по высоте) 5: нажмите на шестерню и выберите «Выбрать и редактировать»

Довольно хак-у, но если вы не можете обновить это с помощью кода, это будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...