Скрыть кнопку «Показать больше» в виджете «Сегодня» в iOS10

Я создаю виджет iOS Today и во время тестирования iOS 10 вижу кнопку «Показать больше»/«Показать меньше» в правом верхнем углу заголовка виджета. Как убрать эту кнопку? Я использую Objective-C.


person Gison George    schedule 21.07.2016    source источник


Ответы (6)


В iOS 10, насколько мне известно, параметр «Показать больше» является новым, и мы не можем его удалить, но мы можем изменить его по мере необходимости.

Следующий код позволит вам автоматически изменить размер виджета «Сегодня». Просто измените представление таблицы или коллекции или что-то еще, что вы использовали в своем проекте.

static CGFloat padding = 25.0;

- (void)viewDidLoad 
{
    [super viewDidLoad];

    // Do any additional setup after loading the view from its nib.

    // This will remove extra separators from tableview
    self.articleTableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

    // Add the iOS 10 Show More ability
    [self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];
}

- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize {
   if (activeDisplayMode == NCWidgetDisplayModeCompact){
       // Changed to compact mode
       self.preferredContentSize = maxSize;
   }
   else{
       // Changed to expanded mode
       self.preferredContentSize = CGSizeMake(self.articleTableView.contentSize.width, self.articleTableView.contentSize.height + padding);
   }
}
person Moxarth    schedule 24.10.2016
comment
Я использовал это как ссылку --› github.com/sighmon/NI-ipad/blob/master/ - person Moxarth; 24.10.2016
comment
Кнопку «Показать больше» можно убрать... см. ниже. - person MobileVet; 16.01.2017

В viewDidLoad вы можете установить максимально доступный режим отображения.

[self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeCompact];

Это удалит кнопку «Показать больше/меньше», но это может быть не то, что вам нужно. Максимально допустимый размер для компактного представления довольно мал.

Вы можете реализовать:

-(void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize

чтобы обновить preferredContentSize. Параметр maxSize будет максимально допустимым размером для activeDisplayMode.

person jervine10    schedule 09.08.2016
comment
Спасибо, Джервин. Это работает для меня, но на самом деле мне нужно следующее: я не хочу показывать кнопку «больше/меньше» в расширенном режиме. Есть ли способ скрыть кнопку в расширенном режиме. - person Gison George; 10.08.2016
comment
Быстрый тест, который я провел, скрыл кнопку при установке AvailableDisplayMode на NCWidgetDisplayModeCompact - person jervine10; 10.08.2016
comment
При удаче? Это должно быть возможно, так как у меня есть приложения на моем iphone с расширенным режимом по умолчанию без кнопки показать меньше/больше - person Adam Bardon; 06.10.2016

-[NCWidgetProviding widgetActiveDisplayModeDidChange:withMaximumSize:]

Вероятно, это то, что вы ищете, я бы сослался на это

person amariduran    schedule 29.07.2016

К сожалению, вы не можете скрыть это и должны соответствовать

widgetActiveDisplayModeDidChange:withMaximumSize:

виджеты, которые не отображают этот элемент управления, не были созданы для iOS10

person Peter Lapisu    schedule 11.10.2016

Я знаю, что в исходном посте упоминается использование target-c, но если кому-то нужен быстрый ответ, вот он

override func viewDidLoad()
{
    super.viewDidLoad()
    self.extensionContext?.widgetLargestAvailableDisplayMode = .compact
}

Если установлено значение «Компактный», приложение будет поддерживать только компактный режим, т. е. кнопки «Показать меньше»/«Показать»/«Функции» исчезнут.

вот некоторая документация для получения дополнительной информации

person CharlieNorris    schedule 08.02.2018

Размещение этой строки кода внутри метода делегата widgetActiveDisplayModeDidChange решило мою проблему.

[self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];

Если вы хотите скрыть параметр «Показать больше/показать меньше», замените NCWidgetDisplayModeExpanded на NCWidgetDisplayModeCompact.

- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode
                         withMaximumSize:(CGSize)maxSize {

    [self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];

}
person iPhoneDeveloper    schedule 07.05.2018