web-dev-qa-db-fra.com

Masquer le bouton "Afficher plus" du widget Aujourd'hui dans iOS10

Je construis un widget iOS Aujourd'hui et lors du test pour iOS 10, un bouton "Afficher plus"/"Afficher moins" apparaît en haut à droite de l'en-tête du widget. Comment puis-je supprimer ce bouton? J'utilise Objective-C.

10
Gison George

Dans iOS 10, pour autant que je sache, l'option show more est nouvelle et nous ne pouvons pas la supprimer, mais nous pouvons la modifier si nécessaire.

Le code suivant vous permettra de redimensionner automatiquement le widget Aujourd'hui. Il suffit de changer la vue de la table ou de la collection ou ce que vous avez utilisé dans votre projet.

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

Dans viewDidLoad, vous pouvez définir le mode d'affichage disponible le plus large. 

[self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeCompact];

Cela supprimera le bouton Afficher plus/moins, mais ce ne sera peut-être pas ce que vous voulez. La taille maximale autorisée pour la vue compacte est relativement petite. 

Vous pouvez implémenter:

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

mettre à jour votre preferredContentSize. Le paramètre maxSize sera la taille maximale autorisée pour activeDisplayMode.

10
jervine10

Malheureusement, vous ne pouvez pas le cacher et devez vous conformer à la 

widgetActiveDisplayModeDidChange:withMaximumSize:

les widgets qui ne montrent pas ce contrôle n'ont pas été construits pour iOS10

2
Peter Lapisu
-[NCWidgetProviding widgetActiveDisplayModeDidChange:withMaximumSize:]

C’est probablement ce que vous recherchez, je voudrais mentionner this

2
damiancesar

Je connais le message original qui utilise object-c , Mais si quelqu'un a besoin de la réponse Swift, la voici.

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

Lorsqu'elle est réglée sur compacte, l'application ne prend en charge que le mode compact, c'est-à-dire afficher moins/afficher les boutons/la fonctionnalité sera supprimée.

voici quelques documentation pour plus d'informations 

0
CharlieNorris

Placer cette ligne de code dans la méthode de délégué widgetActiveDisplayModeDidChange a résolu mon problème.

[self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];

Si vous voulez masquer l'option afficher plus/afficher moins, remplacez NCWidgetDisplayModeExpanded par NCWidgetDisplayModeCompact.

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

    [self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];

}
0
iPhoneDeveloper