Ärger mit autoresizingMask und festen Margen
-
09-10-2019 - |
Frage
Ich versuche, dies mit Code zur Arbeit zu kommen in einem Viewcontroller Sicht:
, aber ich kann es nicht an der Arbeit.
Ich habe versucht,
-(void)loadView {
UIView *contentView = [[[UIView alloc] init] autorelease];
self.view = contentView;
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(5,5,0,100);
button.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[contentView addSubview:button];
}
aber die Breite der Schaltfläche ist immer noch die Breite des Super ...
Ich bin sicher, dass es eine einfache Erklärung.
Danke, alle!
Antonio
Lösung
-initWithFrame:
ist der designierte Initialisierer für UIView. Auf der Mac-Seite (NSView) weiß, dass ich seltsame Dinge passieren können, wenn -init
statt -initWithFrame:
verwenden. Vielleicht ist dies das Problem?
Andere Tipps
Statt mit der autoresizingMask
Flagge stört, ich layoutSubviews
in benutzerdefinierter UIView
Unterklasse außer Kraft setzen:
- (void)loadView { self.view = [ContentView view]; self.view.frame = CGRectMake(0, 0, 30, 100); }
wo ContentView
ist wie folgt definiert:
@interface ContentView : UIView { UIButton *button; } + (id)view; @end @implementation ContentView { + (id)view { return [[self new] autorelease]; } - (id)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { button = [UIButton buttonWithType:UIButtonTypeCustom]; [self addSubview:button]; // Retains the button. } return self; } - (void)layoutSubviews { const CGFloat margin = 5; CGRect size = self.frame.size; button.frame = CGRectMake(margin, margin, size.width - 2 * margin, size.height - 2 * margin); } }
Versuchen Sie diesen Code.
- (void)loadView
{
CGRect screenBounds = [UIScreen mainScreen].bounds;
UIView *contentView = [[[UIView alloc] initWithFrame:screenBounds] autorelease];
self.view = contentView;
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(5,5,screenBounds.size.width - 10,100);
[button setTitle:@"hello" forState:UIControlStateNormal];
button.autoresizingMask = UIViewAutoresizingFlexibleWidth;
[contentView addSubview:button];
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow