Ho eseguito la transizione del mio progetto su Xcode 6 per poterlo costruire per iOS 8. Tuttavia, un particolare UILabel causa l'arresto anomalo dell'app quando è aggiunto alla gerarchia della vista. Questo è l'unico log degli errori che ricevo:UILabel causa l'arresto anomalo dell'app quando aggiunto alla vista (solo Xcode 6 e iOS 8)
-[MyViewController _contentInsetsFromFonts]: unrecognized selector sent to instance 0x16d90da0
Sono stato in grado di individuare il metodo contentInsetsFromFonts
ovunque nel mio progetto. Inoltre, non sono stato nemmeno in grado di trovare un riferimento ovunque online, compresa la documentazione di Apple. Non sto usando un pennino per questo UIViewController modo l'interfaccia utente è costruita nel metodo loadView
:
- (void)loadView {
UIImage *trackImage = [UIImage imageNamed:@"sliderTrack.png"];
sliderBackground = [[UIImageView alloc] initWithImage:trackImage];
UIView *view = [[UIView alloc] initWithFrame:sliderBackground.frame];
[view addSubview:sliderBackground];
slider = [[UISlider alloc] initWithFrame:sliderBackground.frame];
CGRect sliderFrame = slider.frame;
sliderFrame.size.width -= 46;
slider.frame = sliderFrame;
slider.center = sliderBackground.center;
slider.backgroundColor = [UIColor clearColor];
[slider setMinimumTrackImage:[UIImage imageNamed:@"sliderMaxMinTrackImage.png"] forState:UIControlStateNormal];
[slider setMaximumTrackImage:[UIImage imageNamed:@"sliderMaxMinTrackImage.png"] forState:UIControlStateNormal];
UIImage *thumbImage = [UIImage imageNamed:@"cancel-slider.png"];
[slider setThumbImage:thumbImage forState:UIControlStateNormal];
slider.minimumValue = 0.0;
slider.maximumValue = 1.0;
slider.continuous = YES;
slider.value = 0.0;
// Set the slider action methods
[slider addTarget:self
action:@selector(sliderUp:)
forControlEvents:UIControlEventTouchUpInside];
[slider addTarget:self
action:@selector(sliderDown:)
forControlEvents:UIControlEventTouchDown];
[slider addTarget:self
action:@selector(sliderChanged:)
forControlEvents:UIControlEventValueChanged];
NSString *labelText = @"label text";
UIFont *labelFont;
NSString *osVersion = [[UIDevice currentDevice] systemVersion];
if ([osVersion floatValue] >= 7.0) {
labelFont = [UIFont systemFontOfSize:22.0];
} else {
labelFont = [UIFont systemFontOfSize:24.0];
}
CGSize labelSize = [labelText sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:labelFont, NSFontAttributeName, nil]];
label = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, labelSize.width, labelSize.height)];
CGFloat labelHorizontalCenter = slider.center.x + (thumbImage.size.width/2);
label.center = CGPointMake(labelHorizontalCenter, slider.center.y);
// Set other label attributes and add it to the view
label.textColor = [UIColor whiteColor];
label.textAlignment = NSTextAlignmentCenter;
label.backgroundColor = [UIColor clearColor];
label.font = labelFont;
label.text = labelText;
[view addSubview:label];
[view addSubview:slider];
label.layer.delegate = self;
self.view = view;
}
L'applicazione non va in crash a [view addSubview:label]
; si arresta dopo il ritorno del metodo loadView
.
Che cosa hai fatto per risolverlo? – iosMentalist
Appena cancellato la riga "label.layer.delegate = self". In realtà non ho cercato un rimpiazzo perché è un elemento dell'interfaccia utente piuttosto a bassa priorità per me al momento. Mi dispiace per quello –
Immagino che tu stia incorporando SlideToCancelViewController. Ho trovato un'altra classe migliore. – iosMentalist