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

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

6 ответов

Решение

В iOS 10, насколько мне известно, опция show more является новой, и мы не можем ее удалить, но мы можем изменить ее по мере необходимости.

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

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);
   }
}

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

[self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeCompact];

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

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

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

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

-[NCWidgetProviding widgetActiveDisplayModeDidChange:withMaximumSize:]

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

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

widgetActiveDisplayModeDidChange:withMaximumSize:

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

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

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

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

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

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

[self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];

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

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

    [self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];

}
Другие вопросы по тегам