在 iOS10 中的“今日”小部件中隐藏 "Show More" 按钮

Hide "Show More" button from Today widget in iOS10

我正在构建一个 iOS 今天小部件,在测试 iOS 10 时,我在小部件的右上角看到一个 "Show More" / "Show Less" 按钮header。我怎样才能删除这个按钮?我正在使用 Objective-C.

-[NCWidgetProviding widgetActiveDisplayModeDidChange:withMaximumSize:]

可能是你要找的,我会参考this

viewDidLoad中您可以设置最大的可用显示模式。

[self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeCompact];

这将删除显示 More/Less 按钮,但它可能不是您想要的。紧凑视图的最大允许大小相当小。

您可以实施:

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

更新您的 preferredContentSizemaxSize 参数将是 activeDisplayMode.

的最大允许大小

遗憾的是你不能隐藏它并且应该符合

widgetActiveDisplayModeDidChange:withMaximumSize:

不显示此控件的小部件不是为 iOS10

构建的

在iOS10中,据我所知,show more这个选项是新增的,我们不能删除它,但是我们可以根据需要修改它。

以下代码将允许您自动调整“今日”小部件的大小。只需更改 table 或集合视图或您在项目中使用的任何内容。

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

我知道原来 post 提到使用 objective-c 但如果有人需要 swift 答案,这里是

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

当设置为紧凑时,应用程序将仅支持紧凑模式,即 show less/show show buttons/functionality 将消失。

这里有一些 documentation 以获取更多信息

将这行代码放在 widgetActiveDisplayModeDidChange 委托方法中解决了我的问题。

[self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];

如果您想隐藏显示更多/显示更少选项,请将 NCWidgetDisplayModeExpanded 替换为 NCWidgetDisplayModeCompact。

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

    [self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];

}