Скрыть кнопку "Показать больше" от виджета "Сегодня" в 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];
}