Wie erstelle ich eine benutzerdefinierte view-Klasse Programmgesteuert?
Möchte ich ein sehr einfaches erstellen customView mit ein paar UIlabel auf, Wie sollte ich das tun . jedes tutorial oder Anregungen würde geschätzt werden . Ich bin neu hier , habe nicht versucht, Sie vor.
Habe ich versucht, diese mit xib.
@interface MyCustomView : UIView
@property (strong, nonatomic) IBOutlet UILabel *Label;
@end
Umsetzung
#import "MyCustomTimer.h"
@implementation MyCustomView
-(id)initWithCoder:(NSCoder *)aDecoder{
if ((self = [super initWithCoder:aDecoder])){
[self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"MyCustomView" owner:self options:nil] objectAtIndex:0]];
}
return self;
}
@end
Aber ich muss es tun programmgesteuert ,bitte um Hilfe . Dank
Diese Frage ist zu breit für eine einfache QS-Frage hier. Gehen Sie durch das Buch über die alles abdeckt programmgesteuert.
gehen Sie durch alle grundlegenden Lern-Buch. dies ist die grundlegende Sache
Möchten Sie eine benutzerdefinierte Ansicht erstellen, in der bereits existierte Klasse oder Sie möchten, erstellen Sie einen UIView-Klasse mit nib-Datei
gehen Sie durch alle grundlegenden Lern-Buch. dies ist die grundlegende Sache
Möchten Sie eine benutzerdefinierte Ansicht erstellen, in der bereits existierte Klasse oder Sie möchten, erstellen Sie einen UIView-Klasse mit nib-Datei
InformationsquelleAutor Ezimet | 2013-08-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein einfacher Weg, hoffe es hilft dir.
InformationsquelleAutor Shankar BS
Sagen Sie Sie nicht verwenden möchten, XIB und wollen, um dies alles programmgesteuert.
Sie implementieren müssen, um die
initWithFrame:
Methode:So dass Sie erstellen und konfigurieren Ihrer Steuerung (Schriften, Farben, autoresizing Masken, usw.) und fügen Sie diese wie Untersichten, die alle aus der
initWithFrame:
Methode. Sie wahrscheinlich wollen, um den code brechen aus in verschiedene Methoden, um Dinge sauber zu halten.Wenn Sie autolayout, Sie wollen auch alle Ihre Einschränkungen aus der init-Methode.
Wenn Sie nicht Verwendung von autolayout, Sie implementieren sollten, die
-layoutSubviews
Methode. Diese wird aufgerufen werden, zu geeigneten Zeitpunkten, um das layout Ihrer Untersichten (z.B. wenn der Rahmen Ihrer änderungen anzeigen):Aus der
layoutSubviews
Methode können Sie den Zugriffself.bounds
um herauszufinden, die Größe der Ansicht an, dass Zeit. Dies wird Sie wissen lassen, wie viel Breite/Höhe Sie auszurichten, oder wickeln Sie die Dinge richtig.Wenn es um das erstellen einer Instanz der Ansicht benutzen Sie einfach
[[MyCustomView alloc] init]
(aufgerufeninitWithFrame:
mit einem leeren rect) oder[[MyCustomView alloc] initWithFrame:...]
. Festlegen des Rahmens, und fügen Sie es zu einigen anzeigen. DielayoutSubviews
Methode aufgerufen wird, auf allen geeigneten Zeiten, und es wird layed out entsprechend.InformationsquelleAutor Mike Weller
Update Ihrer Klasse zu implementieren
initWithFrame:
sowieinitWithCoder:
, dann können Sie anrufen:In Ihrem code. So haben Sie nur eine Instanz erstellt (, die konfiguriert ist) programmatisch.
es in der Regel nicht ganz so einfach. Ansichten haben in der Regel Ihre autoresizing Maske umgewandelt Einschränkungen nun, es hängt davon ab, wie Sie konfiguriert ist. Sie können auch die layout-Untersichten und update-Einschränkungen Funktionen zum aktualisieren der Regeln, die angewendet werden,...
Ich bin mir nicht sicher, ob ich Sie verstehen...was ich mich letztendlich Frage ist, kann eine Klasse festlegen des Rahmens/Einschränkungen gegenüber der superView—aus der eigenen Klasse? Oder muss es immer aus der superView?
Eine Ansicht, die frame ist im Rahmen seiner superviews Grenzen, aber wer setzt es spielt keine Rolle. Eine Sicht kann es einen eigenen Rahmen. Es wäre im Allgemeinen klassifiziert werden als schlechte Praxis für die Untersicht wissen über die superviews Rahmen aber...
InformationsquelleAutor Wain
Erstellen Ihrer eigenen Klasse, Unterklassen von UIView, dann überschreiben initWithFrame oder drawRect. Überschreiben initWithFrame ist einfacher für einen newbie.
Ihre header - (.h) Datei sollten mit diesem zu starten:
Dann in die Implementierungsdatei (.m) Sie setzen Ihre eigenen initWithFrame.
Müssen Sie möglicherweise zusätzliche Daten oder Optionen bei der Initialisierung, zum Beispiel den text für die Etiketten. In diesem Fall könnten Sie eine init-Methode mit zusätzlichen Argumente wie diese:
InformationsquelleAutor Zeke
Können Sie diese Zeilen in Ihre initWithFrame:
Es ist ein sehr einfaches Beispiel .. fügen Sie einfach eine Beschriftung, die Sie hinzufügen können, wie viele Objekte, die Sie wollen ein Programm.. mit Ihrer gewünschten Standorte und frame-Größen und Eigenschaften, was Sie wollen...
vielleicht sollten Sie haben gesucht "UILabel programmgesteuert..
InformationsquelleAutor v-i-s-h-a-l