Ich habe Schwierigkeiten beim Hinzufügen einer Untersicht UIView aus der ViewDidLoad-Methode eines UITableViewController Aber Sie können sehen, die Tabellen-Zelllinien bluten durch die UIView progView. Ive versucht diese Annäherung: Welches ein Versuch ist, das progView UIView dem superview, über der gegenwärtigen Ansicht hinzuzufügen. Wenn ich das ausprobiere, erscheint das UIView nie. Folgender ist der letzte Versuch: Resultat ist das selbe wie self. view addSubview: self. progView Das UIView erscheint aber scheinbar hinter der Tabelle. Im Laufe der Zeit habe ich begonnen, weg von der Verwendung von Table View-Controller, außer wenn die Ansicht sollte ausschließlich eine Liste, und Sie wollen, dass zu erzwingen. Wenn Sie stattdessen eine Tabellenansicht zu einem regulären View-Controller und Einrichtung der Datenquelle hinzufügen und delegieren Sie sich, erhalten Sie eine viel flexiblere Konfiguration, wo die Tableview ist nur eine andere Ansicht in der Hauptansicht nicht die Hauptansicht selbst. Dadurch werden Sie von vielen der eingebauten Einschränkungen des Table View-Controllers befreit. Ndash Das ist eigentlich ganz möglich und einfach - es erfordert nur ein wenig Umverdrahtung. Ich traf eine ähnliche Situation und codiert dieses bis mir erlauben, laden Sie Bildschirme über die Oberseite meiner Tabellenansichten. Mit diesem Ansatz können Sie auch statische Tabellenzellen mit Ihren eigenen Inhalten nutzen. Wenn Ihr Controller ein UITableViewController in einem Storyboard oder XIB ist und Sie wünschen self. view zu einem Standard-UIView neu zuzuweisen, während die vorhandenen Tabellenansicht zu erhalten: Fügen Sie diese Instanzvariablen auf Ihre Header-Datei: In Ihrem Storyboard oder XIB-Datei: Schließen Sie den Tableview in Den UITableViewController auf die tableViewReference-Variable. Dann in Ihrer Implementierungsdatei: Obwohl es seltsam scheinen mag, macht UITableViewController eine Menge schrulligen Zeug mit Referenzen hinter den Kulissen. Sie müssen warten, bis viewDidLoad, um den Swap. Nach diesem Punkt zeigen die Accessoren auf die richtige UIView und UITableView. Usage: Etwas wie fügt ein UIView myView vor der Tabellenansicht hinzu, ohne myView, das mit dem Tabellenansichtsinhalt scrollt. Hinweis: Diese Antwort wurde bearbeitet, nachdem darauf hingewiesen wurde, dass die Lösung einen grenzwertigen paradoxen Code enthielt. UITableViewController macht seltsame Dinge zu den Referenzen es hält. Einige weitere sorgfältige Tests abgeleitet diese einfachere Antwort :) Ich habe in der Lage, eine Subview über eine uitableviewcontroller mit uiviewcontroller Eindämmung hinzuzufügen. UITableViewController ist eigentlich sehr praktisch, wenn es um statische Zellen kommt und dies ist wahrscheinlich das einzige Mal, wo die gemeinsame Antwort nur uitable view kann tatsächlich nicht lebensfähig. So ist dies, wie ich es tun. Geben Sie Ihre UITableViewController ein Storyboard-Kennung dh MyStaticTableView schaffen eine völlig neue UIViewController Unterklasse und nennen es UITableViewControllerContainer Ort dieser Controller anstelle Ihres UITableViewController in Ihrem Storyboard eine Subview an den neuen Controller hinzufügen und verknüpfen Sie es genannt zu einem Ausgang wie viewcontainer auf Sie UITableViewControllerContainer viewDidLoad Methode Probleme können Sie haben: wenn Sie zusätzliche Top-Platz haben, dann sicher sein, die Fahne hinzufügen möchte, um Ihre UITableViewController Vollbild, wenn es an dieser Stelle von Ihrem UITableViewController richtig auf Ihrem UITableViewControllerContainer die Größe Ihnen nicht, Sie Container-Ansicht mit direkt zugreifen kann und was auch immer Sie in den es wird sich zeigen auf dem Tisch-view-Controller-Lösung für eine schnelle (äquivalent zu Daniel Saidi) sein: Wenn Ihr Controller ein UITableViewController in einem Storyboard oder XIB ist und Sie wünschen self. view zu einem Standard-UIView neu zuzuweisen, während die vorhandenen Tabellenansicht zu erhalten: Dann in Ihrer Implementierungsdatei: Fügen Sie diese Instanzvariablen zu Ihrer Tabellenansicht-Controllerdatei hinzu: In der Storyboard - oder XIB-Datei: Verbinden Sie die Tabellenansicht im UITableViewController mit der tableViewReference-Variablen. Dann werden Sie in der Lage sein Kind Ansichten hinzuzufügen, wie folgt: beantwortet 2. September um 10:04 Ihre Antwort 2016 Stapel Wechsel, IncFound 94 Artikeln der Swift Knowledge Base für diese Kategorie: Wenn Sie eine Registerkarte in der Tab-Leiste Controller verfügen, diese Wird automatisch eine Bearbeiten-Schaltfläche, so dass Benutzer ziehen können Tabs herum, um die Benutzeroberfläche anpassen. Dies ist nicht wirklich speichern Sie die Registerkarte für Sie, was bedeutet, dass die Registerkarten beim nächsten Durchlauf wiederherzustellen, wenn Sie die Benutzer selbst entscheiden, aber es tut alles andere für Sie. Lesen Sie weiter gtgt Dies ist ein häufiger Fehler, aber seine leicht fixiert. Es gibt zwei Hauptgründe, warum Tabellenansichten Zellen nicht zurückgeben, aber sie geben unterschiedliche Fehlermeldungen. Wenn Sie so einen Fehler erhalten. Lesen Sie weiter gtgt Dieser Fehler bedeutet in der Regel Theres ein Problem mit Ihrem Zell-Prototypen. Es gibt zwei Hauptgründe, warum Tabellenansichten Zellen nicht zurückgeben, aber sie geben unterschiedliche Fehlermeldungen. Wenn Sie so einen Fehler erhalten. Fortfahren Lesen gtgt Normalerweise tippen Sie auf eine Registerkarte in einem UITabBar zeigt diese Registerkarte, aber es ist oft der Fall, dass Sie dieses Verhalten überschreiben möchten, zum Beispiel um eine Ansicht modal anzuzeigen. Wenn Sie mit einem von Xcodes eingebaute Storyboard-Vorlagen für die Erstellung Ihrer Benutzeroberfläche, seine nicht sofort offensichtlich, wie dies zu tun, aber zum Glück ist es nicht so schwer mit dem Ansatz unten. Continue Reading gtgt Segmented Kontrollen geben jedem Segment gleiche Breite standardmäßig, das ist ästhetisch ansprechend, wenn Sie Platz zu ersparen, aber technisch irritierend, wenn Platz knapp ist. Anstatt zu versuchen, Squash zu viel in einen kleinen Raum, haben Sie zwei Optionen: stellen Sie benutzerdefinierte Segment-Breiten, oder fragen Sie iOS, um sie individuell für Sie. Lesen Sie weiter gtgt Navigationsleisten sind eine der häufigsten Benutzeroberflächen-Komponenten in iOS, so dass die Möglichkeit, Schaltflächen zu ihnen hinzufügen, ist etwas, das Sie viel tun. Sie können Schaltflächen auf der linken und rechten Seite einer Navigationsleiste hinzufügen und ab iOS 5.0 können Sie mehr als eine zu beiden Seiten hinzufügen. Lesen Sie weiter gtgt Es gibt zwei Schritte, um eine Arbeitsschaltfläche zu einer Tabellenansichtszelle hinzuzufügen. Der erste Schritt ist, um eine Schaltfläche wie folgt hinzuzufügen. Weiterlesen gtgt meisten UIBarButtonItems enthalten entweder ein Symbol oder einen Text, aber sie können in der Tat so viel mehr zu tun, können Sie einbetten jede Art von UIView Unterklasse in einer Bar-Taste Element, setzen Sie dann die Taste in eine Navigationsleiste oder der Symbolleiste, wie Sie normalerweise würde. Weiterlesen gtgt Theres eine spezielle Art von UIBarButtonItem namens flexibleSpace, und dies wirkt wie eine Feder zwischen anderen Tasten, schieben sie auf einer Seite. Ein flexibler Raum wird immer erweitern, um so viel Raum wie möglich aufzunehmen, und spaltet Raum gleichmäßig zwischen anderen flexiblen Räumen, wenn sie existieren. Lesen Sie weiter gtgt Sie können die eingebauten iOS-Tabellenabschnittsüberschriften verwenden, indem Sie einen Wert aus titleForHeaderInSection wie diesem zurückgeben. Fortfahren Lesen gtgt iOS kann dynamisch Schatten für jedes UIView erzeugen, und diese Schatten passen sich automatisch an die Form des betreffenden Elements an, sogar nach den Kurven des Textes innerhalb eines UILabels. Diese Funktionalität ist direkt in gebaut, so dass alles, was Sie tun müssen, ist ihre Eigenschaften konfigurieren, und es gibt vier, die Sie brauchen, um zu kümmern. Weiterlesen gtgt Es gibt zwei Möglichkeiten, eine Verknüpfung für 3D Touch hinzuzufügen: Sie können eine Liste von statischen Elementen registrieren, die immer angezeigt werden, oder Sie können eine dynamische Liste im Code basierend auf Benutzerinformationen erstellen. Weiterlesen gtgt Die UIAlertController Klasse von iOS 8.0 Sie beliebig viele Textfelder hinzufügen können, wie Sie benötigen, und Sie können den Wert dieser Textfelder gelesen, wenn der Benutzer auf eine Schaltfläche tippt. Weiter gtgt Lesen Ab iOS 8.0, visuelle Effekte wie Unschärfe und Lebendigkeit sind ein Kinderspiel, weil Apple eine in UIView Unterklasse gebaut bereitstellt, die die harte Arbeit tut: UIVisualEffectView. Wenn Sie beispielsweise ein Bild verschwimmen möchten, verwenden Sie diesen Code. Continue Reading gtgt iOS hat eine einfache, schöne Lösung für die Behandlung Retina und Retina HD-Grafik, und in der Tat es fast die ganze Arbeit für Sie alles, was Sie tun müssen, ist Name Ihre Assets korrekt. Weiterlesen gtgt Wenn Ihre Benutzeroberfläche die Tastatur aufruft, sollten Sie reagieren, indem Sie Ihr Layout so anpassen, dass alle Teile noch sichtbar sind. Wenn Sie unter Verwendung eines UIScrollView oder einer Klasse, die eine Bildlaufansicht als Teil ihres Layouts haben (z. B. Tabellenansichten und Textansichten), bedeutet dies, die contentInset - Eigenschaft anzupassen, um der Tastatur Rechnung zu tragen. Lesen Sie weiter gtgt Alle Ansichten (auch solche, die keine Bilder enthalten) haben einen Content-Modus, der die Art und Weise beeinflusst, wie sie ihren Inhalt zeichnen. Die Voreinstellung ist Skalieren zu füllen, weil seine schnellste: der Inhalt der Ansicht nur gestreckt (oder unten), um den Platz verfügbar zu passen. Aber es gibt zwei andere, die youll verwenden eine Menge: Aspect Fit und Aspect Fill. Weiterlesen gtgt Animation in iOS wird durch das Starten eines Animation-Blocks, dann sagen, iOS, welche Änderungen Sie machen wollen. Da die Animation Block aktiv ist, passieren diese Änderungen werden nicht sofort statt, iOS sie sanft über die Zeit ausgeführt wird Sie angegeben, so dass Sie sich keine Sorgen machen müssen, wenn es fertig wird oder, was alle Zwischenzustände sind. Lesen Sie weiter gtgt iOS 10 führte eine neue Verschluss-basierte Animation Klasse in Form von UIViewPropertyAnimator. Unter anderem ermöglicht es Ihnen interaktiv die Position einer Animation anzupassen, so dass es zu jedem Zeitpunkt springen, dass wir eine Technik, die häufig als Scrubbing. Continue Reading gtgt Spring Animationen arbeiten, indem sie von einem Start-Zustand in einen Endzustand, mit einem leichten Überschwingen und Bounce am Ende. Wenn Sie zum Beispiel eine Ansicht von X: 0 auf X: 100 animieren möchten, können Sie sie auf X: 120 verschieben, bevor sie wieder auf X: 80, dann X: 110 und schließlich X: 100 zurückspringen, als wäre die Animation Befestigt an einer Feder. Continue Reading gtgt Eine Größenklassenänderung wird normalerweise durch den Benutzer ausgelöst, der sein Gerät dreht, aber es kann zum Beispiel auch passieren, wenn das neue iOS 9.0 Multitasking verwendet wird, um Fensteraufteilungen anzupassen. Ihre Benutzeroberfläche muss in allen Größenklassen, die sie unterstützt, großartig aussehen, dh Sie erstellen entweder mehrere Varianten Ihrer Layouts im Interface Builder (dies ist die bevorzugte Route) oder Sie ändern Änderungen im Code. Weiterlesen gtgt UIKit zieht Ansichten zurück nach vorne, was bedeutet, dass Ansichten, die höher über dem Stapel liegen, auf die darunter liegenden gezeichnet werden. Wenn Sie eine Subview an die Front bringen wollen, theres eine Methode nur für Sie: bringSubview (toFront :). Heres ein Beispiel. Fortfahren Lesen gtgt Sein allgemeines, um Inhalt Einfügungen einer Rolleansicht oder irgendeiner Kategorie einzustellen, die ein bettet (Tabellenansicht, Textansicht, usw.), damit Sie den Scrollingmechanismus genau steuern, aber, wann immer Sie den Inhalt einsetzen, ist seine eine gute Idee auch Ändern Sie die Einblendung für die Bildlaufanzeige: die visuelle Anzeigeleiste rechts, die den Benutzern zeigt, wie weit sie zum Scrollen übrig geblieben sind. Weiterlesen gtgt Mit der UITextChecker-Klasse können Sie das iOS-Wörterbuch in wenigen Zeilen Code aufzeichnen. Sagen Sie es den Bereich der Zeichenfolge, die Sie überprüfen möchten (dies könnte die gesamte Zeichenfolge oder nur ein Teil davon sein), dann fragen Sie es, Ihnen zu sagen, wo der Rechtschreibfehler ist. Wenn es heißt, es gibt keine Fehler, ist das Wort gut. Hier ist der Code. Fortfahren Lesen gtgt Jede Ansicht hat ein eigenes Koordinatensystem, was bedeutet, dass wenn ich auf eine Schaltfläche tippe und iOS frage wo ich geklopft habe, wird es mir sagen, wo ich tapped relativ zum linken oberen Rand der Schaltfläche. Dies ist normalerweise das, was Sie wollen, aber wenn Sie wollen, um eine Position in einer Ansicht in eine Position zu übersetzen, ist es einfach genug zu tun. Lesen Sie weiter gtgt Als iBooks erstmals in iOS 3.2 gestartet wurde, war seine Seite curl Wirkung fast süchtig: es bewegte sich so fließend mit dem Finger, dass es fühlte Sie berühren echte Papier. Von iOS 5.0 auf dieser Seite curl-Effekt ist für jeden Entwickler als Teil der UIPageViewController-Klasse zur Verfügung. Seine API ist nicht sofort offensichtlich, um Neulinge, obwohl, so Im werde Ihnen ein vollständiges Beispiel geben. Lesen Sie weiter gtgt Parallaxeffekte sind seit iOS 7.0 Standard, und die UIInterpolatingMotionEffect-Klasse macht dies einfach durch automatische Glättung der Beschleunigungsmesser-Eingang, so dass Ihre Ansichten auf Tilt-Daten anpassen können. Continue Reading gtgt Während die Komplexität der Auto-Layout machen es etwas, die meisten Menschen lieber mit Interface Builder zu greifen, hat es einige coole Tricks bis seine Hülse, wenn Sie es vorziehen, in Code zu arbeiten. Einer dieser Tricks wird als Visual-Format-Sprache (VFL) und können Sie mit ASCII-Kunst zu sagen, iOS, wie Sie Ihre Ansichten ausgelegt. Lesen Sie weiter gtgt iOS hat ein eingebautes Menü-System, das zwar nützlich, aber nicht viel nutzen, weil die Nutzer nicht erwarten, es zu sehen, Entwickler es nicht verwenden, so dass es noch weniger wahrscheinlich, dass die Nutzer erwarten, es zu sehen. Lesen Sie weiter gtgt Ein UIAlertController Action-Blatt auf dem iPad ist nicht so einfach wie auf dem iPhone. Der Grund dafür ist einfach: Auf dem iPhone schiebt sich die Aktionsfolie von unten herab, die Besitzer der Aufmerksamkeit wirksam, bis sie entlassen wurde, während auf dem iPad es von überall angezeigt werden konnte. In der Tat, wenn Sie nur versuchen und zeigen eine auf einem iPad wie dieses, Ihre App abstürzt. Continue Reading gtgt Ab iOS 8.0 theres eine einfache Möglichkeit, um die Liste der Schaltflächen anpassen, die angezeigt werden, wenn der Benutzer swipes von rechts nach links: editActionsForRowAt. Geben Sie ein Array von UITableViewRowAction-Objekten zurück, die Titel und Stile (und auch Hintergrundfarben, wenn Sie ihr Aussehen anpassen möchten), und iOS macht den Rest. Weiterlesen von gtgt Wenn ein Benutzer eine Tabellensichtzeile antippt, wird er automatisch von iOS hervorgehoben und häufig verwenden wir diese Aktion, um einen weiteren View-Controller mit detaillierteren Informationen anzuzeigen. Wenn der Benutzer zurück geht, möchten Sie wahrscheinlich, dass ihre Auswahl zu gehen, so dass es nicht ausgewählt bleibt, und wenn youre mit einem UITableViewController, die einfach mit clearsSelectionOnViewWillAppear tun. Lesen Sie weiter gtgt Die iOS UITapGestureRecognizer-Klasse verfügt über eine integrierte Methode, um einen Doppelklick auf eine beliebige Ansicht zu erkennen. Alles, was Sie tun müssen, ist die Erkennung erstellen, setzen ihre numberOfTapsRequired - Eigenschaft auf 2, dann fügen Sie es der Ansicht, die Sie überwachen möchten. Weiterlesen gtgt Das Erfassen von Pan-Gesten ist mit einem regulären UIPanGestureRecognizer einfach, aber theres ein spezieller Gestenerkenner, um zu verwenden, wenn Sie den Benutzer erkennen, der vom Rand ihres Schirmes swiping ist. Das folgende Beispiel zeigt, dass der Benutzer vom linken Rand des Bildschirms verschwindet. Lesen Sie gtgt Sie wissen wahrscheinlich schon, dass viewWillDisappear () aufgerufen wird, wenn ein Viewcontroller im Begriff ist, wegzugehen, und das auch aufgerufen wird, wenn der Benutzer auf die Schaltfläche "Zurück" in einem Navigationscontroller tippt. Problem ist, wird die gleiche Methode aufgerufen, wenn der Benutzer vorwärts bewegt, d. H. Wenn Sie einen anderen View-Controller auf den Stapel schieben. Fortfahren Lesen gtgt Es gibt keine eingebaute Weise, den Schirm zu verdunkeln, es sei denn youre, der einen Ansichtsteuerpult darstellt, an welchem Punkt iOS den Hintergrundansichtcontroller für Sie dimimmt. Fortfahren Lesen Sie gtgt Youve immer in der Lage, benutzerdefinierte Ansichten in Ihre Anwendungen haben, aber wenn youre mit einer harten Zeit zu visualisieren, wie sie sich Design-Zeit dann sollten Sie IBDesignable ausprobieren: es können Sie genau sehen, wie Ihre benutzerdefinierte Ansichten Blick in IB, und wenn Sie kombinieren es mit IBInspectable Sie können sogar Ihre Ansichten Design dort auch. Weiterlesen gtgt Wenn der Benutzer einen iOS-Bildschirm berührt, wird touchesBegan () sofort mit einem Satz von UITouches aufgerufen. Wenn Sie finden möchten, wo der Benutzer berührt, müssen Sie eine dieser Berührungen nehmen dann verwenden Sie den Ort (in :) auf sie, wie diese. Fortfahren Lesen gtgt Wenn Sie einen schnellen Weg, um eine Ansicht in einer komplizierten Ansicht Hierarchie, youre auf der Suche nach viewWithTag () geben Sie es das Tag zu finden und eine Ansicht zu suchen, und diese Methode sucht alle Subviews und alle Sub-Subviews und so weiter, bis sie eine Ansicht mit der passenden Tag-Nummer findet. Die Methode gibt ein optionales UIView zurück, da es möglicherweise keine Ansicht mit diesem Tag findet, so dass es sorgfältig ausgepackt wird. Lesen Sie weiter gtgt iOS hat eine eingebaute Möglichkeit zum Übergang zwischen den Ansichten, und Sie können dies verwenden, um 3D-Flips in nur ein paar Zeilen Code zu produzieren. Heres ein grundlegendes Beispiel, das zwischen zwei Ansichten. Lesen Sie weiter gtgt iOS 10 führt neue Wege ein, haptisches Feedback zu generieren, indem vordefinierte Schwingungsmuster verwendet werden, die von allen Apps geteilt werden, so dass Benutzer verstehen, dass verschiedene Arten von Feedback besondere Bedeutung haben. Der Kern dieser Funktionalität ist UIFeedbackGenerator, aber das ist nur eine abstrakte Klasse die drei Klassen, die Sie wirklich interessieren, sind UINotificationFeedbackGenerator, UIImpactFeedbackGenerator und UISelectionFeedbackGenerator. Lesen Sie weiter gtgt Sie können setBackgroundImage () auf einer beliebigen Navigationsleiste aufrufen, indem Sie ein zu verwendendes Bild und die Balkenmetriken, die Sie beeinflussen möchten, ausführen. Bar-Metriken haben Sie angeben, welche Größen von Bars, die Sie ändern möchten: sollte dies von allen Bars, nur Telefon-Bars, oder einfach nur Telefon-Bars auf Landschaft. Lesen Sie weiter gtgt Sie können dies nicht tun UIStackView ist eine nicht-Zeichnung, was bedeutet, dass drawRect () nie aufgerufen wird und seine Hintergrundfarbe ignoriert wird. Wenn Sie dringend eine Hintergrundfarbe wünschen, sollten Sie die Stapelansicht in eine andere UIView-Ansicht stellen und dieser Ansicht eine Hintergrundfarbe geben. Continue Reading gtgt Seit iOS 7.0 sind Tabellenansichtszellen grau gewesen, wenn sie geklopft wurden, selbst wenn Sie Interface Builder angaben, dass sie blau sein sollten. Dont worry, though: seine eine einfache Sache zu ändern, solange Sie dont mind schriftlich drei Zeilen Code. Insbesondere müssen Sie so etwas zu Ihrer cellForRowAt-Methode hinzufügen. Weiterlesen gtgt Der User-Text in einem UITextField ist standardmäßig sichtbar, aber Sie können die Funktion des iOS-Text-Hiding-Passworts aktivieren, indem Sie einfach die Textfelder isSecureTextEntry auf true setzen. Fortfahren Lesen gtgt iOS gibt UINavigationController eine einfache Eigenschaft, die einige komplexe Verhalten maskiert. Wenn Sie hidesBarsOnSwipe für einen beliebigen UINavigationController auf true setzen, fügt iOS automatisch eine Tap-Gestenerkennung Ihrer Ansicht hinzu, um das Ausblenden (und Anzeigen) der Navigationsleiste bei Bedarf zu verarbeiten. Das bedeutet, dass Sie das Verhalten der Safaris-Navigationsleiste in einer einzigen Codezeile nachahmen können. Fortfahren Lesen gtgt Ab iOS 8.0 ist es einfach, eine Navigationsleiste automatisch ausblenden, wenn der Benutzer tippt den Bildschirm, aber nur, wenn sein Teil eines UINavigationController. Wenn diese Option auf "true" gesetzt ist, fügt die hidesBarsOnTap-Eigenschaft eines Navigationscontrollers automatisch eine Tap-Gestenerkennung Ihrer Ansicht hinzu, um das Ausblenden (und Anzeigen) der Navigationsleiste nach Bedarf zu verarbeiten. Lesen Sie weiter gtgt Sie können die Statusleiste in einem oder allen Ihrer View-Controller nur durch Hinzufügen dieses Codes ausblenden. Continue Reading gtgt Sobald Sie die Editing-Eigenschaft eines UITableView auf true gesetzt haben, stoppen seine Zellen, tappable zu sein. Dies ist oft eine gute Idee, denn wenn ein Benutzer explizit aktiviert Bearbeitungsmodus möchten sie wahrscheinlich zu löschen oder verschieben Zeug, und seine nur werden ärgerlich, wenn sie Zeilen zufällig auswählen können. Lesen Sie weiter gtgt Wenn Sie ein UITextField oder UITextView haben und Benutzer bei der Eingabe von mehr als einer bestimmten Anzahl von Briefen stoppen möchten, müssen Sie sich als delegate für das Steuerelement einrichten, entweder shouldChangeCharactersIn (für Textfelder) oder shouldChangeTextIn (für Text Ansichten). Lesen Sie weiter gtgt Wenn Sie HTML lokal generieren und es in Ihrer App anzeigen möchten, ist es einfach, in UIWebView und WKWebView zu tun. Erstens, Heres der Code für UIWebView. Weiterlesen gtgt Auf Projektebene können Sie festlegen, welche Ausrichtungen Ihre gesamte App unterstützen soll, aber manchmal möchten Sie, dass einzelne Viewcontroller eine Untermenge unterstützen. Beispielsweise möchten Sie, dass der Großteil Ihrer App in einer beliebigen Orientierung arbeiten soll, aber ein Teil, um speziell im Portrait zu arbeiten. Lesen Sie weiter gtgt Wenn Sie eine einfache Möglichkeit, die Benutzer wissen, wann ein UIButton getappt wurde möchten, versuchen Sie, seine showTouchWhenHighlighted - Eigenschaft auf true gesetzt. Dadurch wird ein kreisförmiger Glüheffekt hinter dem Taster erzeugt, wenn er mit dem Klopfen angezapft ist, was besonders effektiv für Text-Schaltflächen ist. Lesen Sie weiter gtgt Wenn Sie möchten, dass Benutzer ihre Eingabe auf einem UITextField löschen, besteht der Standardansatz darin, dem rechten Rand des Textfeldes eine Löschtaste hinzuzufügen. Dies kann auf zwei Arten geschehen, je nachdem, welche Wirkung Sie wollen. Fortfahren Lesen gtgt Split-Ansicht-Controller auf dem iPad haben eine automatische Anzeige-Modus, was bedeutet, in der Landschaft sowohl die linken und rechten Ansicht-Controller sichtbar sind, aber im Hochformat der linken Ansicht-Controller gleitet über und weg, wie gebraucht. Weiterlesen gtgt Alle Tabellenansichtszellen haben standardmäßig ein Trennzeichen darunter, und dass der Trenner aus stilistischen Gründen ein wenig vom linken Rand des Bildschirms starten kann. Wenn dies mit Ihrer eigenen persönlichen Ästhetik kollidiert, könnten Sie denken, seine leicht zu entfernen, aber Apple hat die Sache ziemlich verwirrt, indem sie ihren Verstand mehr als einmal. Lesen Sie weiter gtgt Wenn Sie mit Auto Layout arbeiten, können Sie Ihre Tabellensicht Zellen automatisch Größe, um ihren Inhalt zu platzieren, indem Sie zwei Methoden, um Ihre Tabelle View Controller: heightForRowAt und estimatedHeightForRowAt. Wenn beide implementiert sind und beide UITableViewAutomaticDimension zurückgeben, werden Ihre Tabellensichtzellen mit dem Auto-Layout gemessen und passen automatisch ihren Inhalt an. Lesen Sie weiter gtgt Sie können eine Benutzer-3D-Touch-Stärke mit der Force-Eigenschaft eines UITouch lesen, die am besten im Vergleich zu touch. maximumPossibleForce verwendet wird. Zum Beispiel können Sie eine in die andere teilen, um zu sehen, wie viel relative Stärke angewendet wird, oder einen geraden Vergleich zu überprüfen, um zu sehen, ob der Benutzer drückt so hart wie möglich ist. Lesen Sie weiter gtgt Sie können den Text eines beliebigen UITextView erzwingen, dass das Padding von seinen Kanten eingerückt wird, indem Sie seine textContainerInset - Eigenschaft auf einen Wert Ihrer Auswahl festlegen. Um beispielsweise einen Textansichtseintrag von 50 Punkten von jeder Kante zu erhalten, würden Sie diesen Code verwenden. Weiterlesen gtgt Drucken in iOS verwendet werden, um mit UIPrintInteractionController getan werden, und, während das noch funktioniert, hat es einen viel besseren Ersatz in Form von UIActivityViewController. Diese neue Klasse ist verantwortlich für die Durchführung einer breiten Palette von Aktionen, die Druck ist nur ein, aber Benutzer können auch tweet, post zu Facebook, per E-Mail senden, und jede andere Aktion, die von einer anderen App registriert wurde. Lesen Sie weiter gtgt Sie können jede Art von UIView hinter einer Tabellenansicht und iOS automatisch die Größe an die Tabelle anpassen. Also, Hinzufügen eines Hintergrundbildes ist nur eine Frage der Verwendung eines UIImageView wie folgt. Continue Reading gtgt Sobald Sie mit UIPickerView zum ersten Mal zu starten, erkennen Sie, es hat keine eingebaute Möglichkeit, den Titel eines seiner Artikel zu lesen. Der Grund dafür ist im Nachhinein offensichtlich, aber keine Sorge, wenn Sie didnt get it auf den ersten: Sie sollten den Titel direkt aus der Pickers-Datenquelle lesen. Weiterlesen gtgt Vorlagebilder sind die iOS 7.0 Weise des Töntens jedes möglichen Bildes, wenn sein Inneres ein UIImageView. Dies wird normalerweise verwendet, um die Tönung von Schaltflächenbildern nachahmen (wie in Symbolleisten und Tabulatoren zu sehen), aber es funktioniert überall, wo Sie ein Bild dynamisch rekolorieren möchten. Lesen Sie weiter gtgt Wenn Sie vollständig im Code arbeiten, können Sie eine UICollectionViewCell-Unterklasse für die Verwendung mit Ihrer Sammlungsansicht registrieren, sodass neue Zellen automatisch vom System gelöscht und wiederverwendet werden. Fortfahren Lesen gtgt Wiederverwendung Tabellenansicht Zellen ist seit iOS 2.0 eine der wichtigsten Performance-Optimierungen in iOS, aber nur mit iOS 6.0 wurde die API mit dem Zusatz der register () - Methode ein wenig aufgeräumt. Continue Reading gtgt Wenn Sie eine Ansicht dynamisch erstellt und wollen, dass es gegangen ist, ist es ein Einzeiler in Swift dank der removeFromSuperview () - Methode. Wenn Sie dies nennen, wird die Ansicht sofort entfernt und möglicherweise auch zerstört wird es nur herum gehalten werden, wenn Sie einen Verweis auf sie an anderer Stelle haben. Heres, wie seine getan. Continue Reading gtgt Sein einfaches, Zeilen von einer Tabellenansicht zu löschen, aber es gibt einen Fang: Sie müssen ihn von der Datenquelle zuerst entfernen. Wenn Sie dies nicht tun, wird iOS theres ein Miss-Match zwischen dem, was die Datenquelle denkt, sollte zeigen, und was die Tabellenansicht tatsächlich zeigt, und youll erhalten einen Absturz zu realisieren. Lesen Sie weiter gtgt Sie können jede UIViewController-Subklasse auf das geschüttelte Gerät durch Überschreiben der motionBegan-Methode reagieren. Dieses ist Gebrauch, Handgriffbewegung (Schütteln) aber in der Theorie auch Fernsteuerungsaktionen zu behandeln, obgleich ich nicht sagen kann, dass Ive jemals jemanden sehen, schreiben Code, um das zu behandeln. Lesen Sie weiter gtgt Sie können benutzerdefinierte JavaScript auf einem UIWebView mit der Methode stringByEvaluatingJavaScript (from :) ausführen. Die Methode gibt einen optionalen String zurück, was bedeutet, wenn der Code einen Wert zurückgibt youll es zurück erhalten sonst youll zurück erhalten nil. Lesen Sie weiter gtgt Jede UIView-Subklasse verfügt über eine Transformationseigenschaft, mit der Sie Größe, Position und Rotation mit Hilfe einer so genannten affinen Transformation manipulieren können. Diese Eigenschaft ist animierbar, was bedeutet, dass Sie eine Ansicht reibungslos doppelt in der Größe machen können, oder machen es Spin herum, nur durch die Änderung eines Wertes. Weiterlesen gtgt Im MessageUI-Framework liegt die MFMailComposeViewController-Klasse, die das Senden von E-Mails von Ihrer App verarbeitet. Sie erhalten, um die Empfänger, Nachricht Titel und Nachricht Text gesetzt, aber Sie nicht bekommen, um es zu senden, die für den Benutzer zu tippen. Weiterlesen gtgt Jeder View-Controller verfügt über eine navigationItem-Eigenschaft, die bestimmt, wie er die Navigationsleiste anpasst, wenn er in einem Navigations-Controller angezeigt wird. Hier fügen Sie beispielsweise linke und rechte Balken-Schaltflächen hinzu, aber auch dort, wo Sie eine Titelansicht festlegen können: Jede UIView-Unterklasse, die an Stelle des Titeltextes in der Navigationsleiste verwendet wird. Lesen Sie weiter gtgt Sie sollten bereits wissen, dass Sie der Navigationssteuerungsleiste einen Titel geben können, indem Sie die title - Eigenschaft Ihrer ViewController oder eine ViewController navigationItem setzen, aber wussten Sie auch, dass Sie prompt Text zur Verfügung stellen können? Ihre Navigationsleiste in der Höhe verdoppeln und den Titel und die Eingabeaufforderung anzeigen. Lesen Sie weiter gtgt Wenn Sie Ihren Reiterleistencontroller von Grund auf neu erstellen, oder wenn Sie nur das Setup Ihrer Registerkarten zur Laufzeit ändern möchten, können Sie dies tun, indem Sie einfach die viewControllers-Eigenschaft des Tabulator-Controllers setzen. Dies erwartet, dass ein Array von View-Controllern in der Reihenfolge, die Sie möchten, dass sie angezeigt werden, und Sie sollten bereits jede Ansicht-Controller mit eigenen UITabBarItem mit einem Titel und Symbol eingerichtet haben. Weiterlesen von gtgt Mit der Eigenschaft tintColor einer beliebigen UIView-Unterklasse können Sie den auf ihn angewendeten Färbeeffekt ändern. Der genaue Effekt hängt davon ab, welche Steuerung Sie ändern: Für Navigationsleisten und Tabstäbe bedeutet dies den Text und die Symbole auf ihren Schaltflächen, für Textansichten bedeutet dies den Auswahlcursor und hervorgehobenen Text, für Fortschrittsbalken die Spurfarbe und so weiter. Lesen Sie weiter gtgt Die UIActivityViewController-Klasse ist die iOS-Methode für die gemeinsame Nutzung fast alles, fast überall, aber was, wenn Sie nicht möchten, dass Benutzer wählen, Nun, iOS hat ein Werkzeug für das zu, und seine so genannte Social Framework. Beginnen Sie mit dem Import. Lesen Sie weiter gtgt Vor der Veröffentlichung von iOS 6.0 gab es eine Reihe von Bibliotheken von Drittanbietern, die versucht haben, die Freigabe von Inhalten zu vereinfachen, aber selbst mit den vorhandenen Bibliotheken war es noch viel zu schwer. Glücklicherweise fügte Apple UIActivityViewController hinzu, eine Klasse, die das Teilen von Diensten so einfach macht, wie man sagt, welche Art von Inhalt Sie haben. Continue Reading gtgt Alle Navigations-Controller haben eine Symbolleiste rechts eingebaut, aber ihre nicht standardmäßig angezeigt. Und selbst wenn es zeigte, hat es keine Elemente standardmäßig thats down to Sie ausfüllen. Lesen Sie weiter gtgt Wenn Sie alle Ansichten in Code-Textansichten, Schaltflächen, Etiketten, etc erstellen, müssen Sie vorsichtig sein, wie Sie Auto Layout-Einschränkungen hinzufügen zu ihnen. Der Grund dafür ist, dass iOS Constraints für Sie erstellt, die den neuen Ansichten Größe und Position entsprechen, und wenn Sie versuchen, Ihre eigenen Einschränkungen hinzuzufügen, werden diese Konflikte und Ihre App wird brechen. Weiterlesen gtgt Tabellenansichten zeigen standardmäßig Trennzeichen zwischen leeren Zeilen, was ziemlich seltsam aussieht, wenn Sie nur eine Handvoll sichtbarer Zeilen haben. Glücklicherweise ist eine einfache Zeile des Codes alles, was es braucht, um iOS zu zwingen, diese Trennzeichen nicht zu zeichnen, und seine dies. Fortfahren Lesen von gtgt Mit einer Web-Ansicht, um Rich Media leicht anzeigen ist eine gemeinsame Sache zu tun, aber standardmäßig können Benutzer den Text auswählen und macht es aussehen ein wenig weniger wie native Code. Um dies zu beheben, fügen Sie die folgende CSS in den HTML-Code, den Sie laden, und die Benutzer werden nicht in der Lage, etwas wieder zu wählen. Fortfahren Lesen von gtgt Ab iOS 7.0, gehen alle Ansichten automatisch hinter Navigationsleisten, Symbolleisten und Tabstäben, um zu geben, was Apple Kontext mit einer Idee von whats unterhalb der Benutzeroberfläche anzeigt (obwohl verwischt mit einem Milchglas-Effekt) gibt den Benutzern eine Vorstellung davon Sonst ist nur auf dem Bildschirm. Weiterlesen gtgt Wenn Sie Titel in einer Navigationsleiste einstellen, können Sie die Schriftart, die Größe und die Farbe dieser Titel anpassen, indem Sie das Attribut titleTextAttributes für Ihre Navigationsleiste anpassen. Fortfahren Lesen gtgt Machen Sie einen Bildlauf Zoom, wenn Sie Prise ist ein mehrstufiger Ansatz, und Sie müssen alle Schritte, um die Dinge richtig zu funktionieren. Weiterlesen gtgt Es braucht nur eine Methode, um swipe in Tabellenansichten zu löschen: tableView (: commit: forRowAt :). Diese Methode wird aufgerufen, wenn ein Benutzer versucht, eine der Tabellenzeilen mit Hilfe von swipe zu löschen, aber seine Präsenz ist, was ermöglicht Swipe an erster Stelle, dass iOS buchstäblich überprüft, um zu sehen, ob die Methode existiert, und, wenn Es tut, ermöglicht swipe zu löschen. Fortfahren Lesen gtgt Ab iOS 7.0 Benutzer können eine systemweite bevorzugte Schriftgröße für alle Anwendungen festlegen, aber viele Programmierer ignorieren diese Einstellung viel zu Benutzer Ärger. Youre nicht einer dieser Entwickler, sind Sie Natürlich nicht So heres, wie man eine Benutzer-Schriftart-Einstellungen mit UIFont zu ehren. Lesen Sie weiter gtgt Mit dem Schlüsselwort IBInspectable können Sie festlegen, dass einige Teile einer benutzerdefinierten UIView-Unterklasse im Interface Builder konfigurierbar sein sollen. Nur einige Arten von Werten werden unterstützt (Booleans, Zahlen, Strings, Punkte, Rects, Farben und Bilder), aber das sollte für die meisten Zwecke ausreichen. Weiter lesen gtgt Ab iOS 7.0 setzen alle View-Controller standardmäßig ihre eigene Statusleiste, was bedeutet, dass sie schwarzen Text oder weißen Text haben können, je nachdem, was für Ihren View-Controller am besten geeignet ist. Wenn Sie leichten Text in der Statusleiste haben möchten, fügen Sie diesen Code zu Ihrem Ansichtsrechner hinzu. Continue Reading gtgt Wenn ein Nutzer auf einen Weblink in Ihrer App klickt, haben Sie zuvor zwei Möglichkeiten, bevor iOS 9.0 kam: Beenden Sie Ihre App und starten Sie die Web-Seite in Safari, oder bringen Sie einen neuen Web-View-Controller, den Sie entworfen haben, entlang Mit verschiedenen Bedienoberflächen. Beenden Sie Ihre App ist selten, was die Nutzer wollen, so unglaublich viele app endete bis Mini-Safari Erfahrungen, um in ihrer App zu durchsuchen. Lesen Sie weiter gtgt Größe Klassen sind die iOS-Methode zur Erstellung von anpassungsfähigen Layouts, die auf alle Größen und Ausrichtungen von iPhone und iPad toll aussehen. Zum Beispiel, möchten Sie vielleicht sagen, dass Ihre Benutzeroberfläche sieht meist die gleiche im Porträt und Landschaft, sondern auf Landschaft einige zusätzliche Informationen sichtbar ist. You could do this in code by checking for a change in the size of your view controller and trying to figure out what it means, but thats a huge waste of time particularly now that iPad has multiple different sizes thanks to multitasking in iOS 9. Continue Reading gtgt One of the most compelling reasons to upgrade to iOS 9.0 is the new UIStackView class it introduced, which offers a simplified way of doing layouts in iOS. To give you more control over how it arranges their subviews, stack views offer five different distribution types for you to try, and heres what they do. Continue Reading gtgt Apple frequently leaves debugging messages in iOS simulator builds, which is both good and bad: its good because sometimes the information is useful, but its bad because more often than not it just causes unnecessary worries. Continue Reading gtgt When Auto Layout has determined there isnt enough space to accommodate all your views at their natural size, it has to make a decision: one or more of those views needs to be squashed to make space for the others, but which one Thats where content compression resistance comes in: its a value from 1 to 1000 that determines how happy you are for the view to be squashed if needed. Continue Reading gtgt When you register for push notifications, one of two methods ought to be called: didRegisterForRemoteNotificationsWithDeviceToken is called when everything worked correctly, and didFailToRegisterForRemoteNotificationsWithError is called if something went wrong. Continue Reading gtgt About the Swift Knowledge Base This is part of the Swift Knowledge Base. a free, searchable collection of solutions for common iOS questions, all written for Swift 3. Need to know Objective-C fast I wrote a book dedicated to teaching Objective-C to developers who already know Swift its the fastest way to get up to speedUnleash Your Inner App Developer Part 26: Xcode 5 Auto Layout Wrapup By Kevin McNeish updated on 02/04/2014 Do you have an idea for an app but lack the programming knowledge to begin building it In this weekly blog series, I will take you, the non-programmer, step by step through the process of creating apps for the iPhone, iPod touch, and iPad. Join me each week on this adventure, and you will experience how much fun turning your ideas into reality can be This is Part 26 of the series. If you are just getting started, check out the beginning of the series here . In my previous post we went through the steps of converting the Write Review scene in iAppsReview to iOS 7 and Xcode 5. In this post were going to update a few more scenes and learn even more important information about Auto Layout, iOS 7s default edge-to-edge content, and how to specify a global tint for your app You can get the most recent version of the iAppsReview project at this link. I recommend that you follow along with the steps in this post for the best learning experience, but if you get stuck along the way, you can find the finished project at this link . iOS 7s Edge-to-Edge Content One of the biggest changes that affects the projects that you upgrade, is iOS 7s new edge-to-edge content layout. In iOS 7, Apple redesigned the entire look of the operating system with a view toward elevating the users content. You can see this in built-in apps such as Weather, Calendar, and Music ( Figure 1 ). Figure 1 - The updated iOS 7 built-in apps provide edge-to-edge content. As part of this approach to UI design, status bars, navigation bars, and toolbars are now translucent and because of this, view controllers now default to using a full screen layout. To see this in action, lets take a look at the Review scene in the iAppsReview project. In Xcode, open the iAppsReview project. If the storyboard isnt already selected, go to the Project Navigator and select the MainStoryboard file. Scroll to the Review scene as shown in Figure 2 . Figure 2 - The Review scene If you look closely, you can see that the labels at the top of the scene are hidden beneath the navigation bar. In iOS 6, these labels were positioned below the navigation bar, because the main view was positioned below it. In iOS 7, the view is positioned at the very top of the scene beneath the navigation bar, hiding the labels. How can we fix this In iOS 7, view controllers have a new edgesForExtendedLayout property that specifies which edges (top, bottom, left, and right) of a view should extend to the edge of the screen. The default setting is UIRectEdgeAll . which specifies that all edges of the view should extend to the edge of the screen. In both iOS 6 and iOS 7, most views typically extend to the left and right edge of the screen. In iOS 7, the top and bottom edges are the ones you normally want to change. You can write some code to set the view controllers edgesForExtendedLayout property in the viewDidLoad method of a view controller, but its best to set it in the Attributes Inspector. Lets do that now. Modifying the Review Scene To begin, lets fix the problem with the scenes content being hidden below the navigation bar. In the storyboard, click on the status bar at the top of the Review scene to select the scenes view controller. (A blue highlight appears around the scene when you have properly selected it). Go the Attributes Inspector (the third button from the right in the Inspectors toolbar) and in the View Controller section you can see the three attributes for Extend Edges shown in Figure 3 . Figure 3 - The Extend Edges attributes Uncheck the Under Top Bars and Under Bottom Bars options. When you do this, the main view in the Review scene is displayed below the navigation bar and the labels are now visible ( Figure 4 ). Figure 4 - The view positioned below the navigation bar Unchecking these options has the same effect as running the following line of code, which specifies that the left and right sides of the view should be extended to the edge of the screen (but the top and bottom should not): The Under Opaque Bars setting ( Figure 4 ) comes into play if you have changed your navigation bar or toolbars from translucent to opaque. By default, this setting is unchecked, because it usually doesnt make sense to extend a view under a top or bottom bar that is opaque Now that we have the view set up properly, lets fix the layout of the user interface controls. First, lets delete the existing constraints in the view controller. To do this, leave the view controller selected, and then go to the Auto Layout menu (toolbar) at the bottom-right corner of the Interface Builder pane and from the Resolve Auto Layout Issues button, select Clear All Constraints in Review View Controller ( Figure 5 ). Figure 5 - Clear all constraints from the view controller. This particular scene is intended to be read-only (the user can read a past review but not edit it). To disallow editing, select the star-rating control (the large white rectangle below the Entertainment label) and then go to the Attributes Inspector and uncheck the User Interaction Enabled check box ( Figure 6 ). Figure 6 - Uncheck User Interaction Enabled Next, select the UITextView control in the Review scene. Go to the Attributes Inspector and uncheck the Editable option ( Figure 7 ). Figure 7 - Uncheck the Editable option Now lets resize the star rating control, which became oversized when we moved the project to iOS 7. Select the star rating control in the design surface, go to the Size Inspector (the second button from the right in the Inspector toolbar) and change the Height to 60 ( Figure 8 ). Figure 8 - The Size Inspector Now lets make the Review screen reflect the layout of the Write Review screen. I wont provide detailed instructions for this since I already did in my previous post, but here are the main steps you need to perform. (As you move each control, make sure the blue dotted guide lines appear horizontally and vertically when you place the controls.): Move the star rating control below the Entertainment label. Move the image view to the right of the star rating control. Move the UITextView below the star rating and image view controls, and then increase its height by dragging its bottom edge until you see the horizontal guide line appear near the bottom of the scene. When youre finished, the scene should look like Figure 9 . Figure 9 - The rearranged controls Now lets allow Xcode to generate new constraints for the scene. To do this, click the status bar at the top of the Review scene to select the view controller. Next, go to the Auto Layout menu at the bottom-right corner of the Interface Builder pane, click the Resolve Auto Layout Issues button and then select Reset to Suggested Constraints in Review Controller from the popup menu ( Figure 10 ). Figure 10 - Reset constraints in the view controller The Review scenes layout is very similar to that of the Write Review scene. We need to take one more step so that the star rating control doesnt resize itself when the device orientation is changed to landscape. See if you can figure out how to do this. If you need a hint, you can look at my previous post to see how it was done (look in the section Tweaking the Constraints ). Now were ready to test the scene. In the Scheme control at the top-left of the Xcode window, make sure iPhone Retina (3.5-inch) is selected, and then click Xcodes Run button. When the app appears in the Simulator, select the Read Your Reviews option and then click on any of the reviews in the list. Your Review scene should look like Figure 11 . Figure 11 - The updated Review scene The all-new Scosche BoomBuoy (39.99) is the perfect pocket-sized wireless speaker that really packs a punch Count on rich, crystal-clear, omni-directional sound and up to 7 hours of play time with this IP67 rated, waterproof/dustproof speaker. Compact and incredibly rugged, BoomBuoy is designed for optimum performance in outdoor environments. Just clip it to your backpack or slip it into your pocket and head outdoors And it floats. Connect With Us On Join iPhone Lifes 950K Readers amp Fans
No comments:
Post a Comment