I Ho integrato l'estensione di condivisione nella mia app ma voglio fare alcune modifiche nel popup SLComposeServiceViewController come per i requisiti del progetto come cambiare i titoli dei pulsanti e impostare il colore di sfondo per la visualizzazione del testo e intestazione. Come lo faccio?Personalizza SLComposeServiceViewController pop-up dell'estensione di condivisione iOS 8
risposta
Sto rispondendo alla mia domanda se qualcuno potesse aiutarlo. Dopo aver letto molti articoli e aver letto ho trovato la seguente soluzione. Perché non c'è abbastanza contenuto da provare.
Ho modificato la classe base SLComposeServiceViewController come UIViewController in modo da poter eseguire alcune personalizzazioni. Quindi, come sappiamo, possiamo aggiungere popup come evernote, inoltre possiamo applicare animazioni a quel popup.
È possibile ottenere metodo POST di richiamata nel metodo viewddidload del vostro viewController.Where si può fare qualcosa di simile:
- (void)viewDidLoad {
NSExtensionItem *item = self.extensionContext.inputItems.firstObject;
NSItemProvider *itemProvider = item.attachments.firstObject;
if ([itemProvider hasItemConformingToTypeIdentifier:@"public.url"]) {
[itemProvider loadItemForTypeIdentifier:@"public.url"
options:nil
completionHandler:^(NSURL *url, NSError *error) {
NSString *urlString = url.absoluteString;
NSLog(@"%@",urlString);
}];
}
}
Dall'alto codice è possibile ottenere link URL. per ulteriori informazioni per ottenere immagini e altre cose è meglio fare riferimento solo alla documentazione Apple.
Penso che nella stessa documentazione si accenna che è preferibile utilizzare le costanti definite in MobileCoreServices per i tipi di UTI. qualcosa come: 'if ([currentItem hasItemConformingToTypeIdentifier: (__ bridge NSString *) kUTTypeURL])' –
È possibile modificare ad esempio i titoli dei pulsanti di SLComposeServiceViewController
in questo modo:
class CustomServiceViewController: SLComposeServiceViewController {
override func viewDidLoad() {
let navigationBar = view.subviews.first?.subviews?.last? as? UINavigationBar
let postButton = navigationBar?.subviews.last? as? UIButton
let cancelButton = navigationBar?.subviews.last? as? UIButton
postButton?.setTitle("Done", forState: .Normal)
}
}
essere avvertito - è una soluzione fragile, sulla base di interni privi di documenti di SLComposeServiceViewController
Questo non funziona più da Xcode 6.2. – CamQuest
Questo funziona come di Xcode 6.4 e iOS 8,4
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
for(UIView* v in self.navigationController.navigationBar.subviews){
if(![v isKindOfClass:[UIButton class]]){
continue;
}
UIBarButtonItem* b = (UIBarButtonItem*)v;
if([b.title isEqualToString:@"Post"]){
b.title = @"Save";
}
}
}
Nota è in viewDidAppear e non viewDidLoad. Il pulsante è in realtà un'istanza di UINavigationButton tuttavia l'ho lanciato su un UIBarButtonItem che è la sua controparte pubblica. Non ho verificato se questo supererà la revisione di Apple perché potrebbero argomentare l'utilizzo di un'API privata. Se il titolo del post viene localizzato in altre lingue, questo non funzionerà, ma non è un grosso problema perché la modifica del titolo è puramente estetica. Sarei titubante nel cambiare il titolo in base al suo ordine di sottotitoli, a causa del problema da destra a sinistra in alcuni paesi, tuttavia una cosa che si potrebbe fare è controllare che sia in grassetto/con bordi e che sia il pulsante post.
Per modificare il testo del pulsante Post, ecco una soluzione Swift che molto probabilmente dovrebbe passare in rassegna (attenzione che non ho ancora provato). Farlo in un SLComposeServiceViewController
sottoclasse:
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
// Reset Post button text.
for item in (self.navigationController?.navigationBar.items)! {
if let rightItem = item.rightBarButtonItem {
rightItem.title = "Save"
break
}
}
}
Perfetto! grazie ! – Alfi
Il [documentazione] (https://developer.apple.com/library/mac/documentation/Social/Reference/SLComposeServiceViewController_Class/) dovrebbe aiutare. – twe4ked
Sto anche cercando ulteriori informazioni sulla personalizzazione di SLComposeServiceViewController –