Я создаю виджет iOS Today и во время тестирования iOS 10 вижу кнопку «Показать больше»/«Показать меньше» в правом верхнем углу заголовка виджета. Как убрать эту кнопку? Я использую Objective-C.
Скрыть кнопку «Показать больше» в виджете «Сегодня» в iOS10
Ответы (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);
}
}
В viewDidLoad
вы можете установить максимально доступный режим отображения.
[self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeCompact];
Это удалит кнопку «Показать больше/меньше», но это может быть не то, что вам нужно. Максимально допустимый размер для компактного представления довольно мал.
Вы можете реализовать:
-(void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize
чтобы обновить preferredContentSize
. Параметр maxSize
будет максимально допустимым размером для activeDisplayMode
.
NCWidgetDisplayModeCompact
- person jervine10; 10.08.2016
-[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];
}