Heim  >  Artikel  >  Backend-Entwicklung  >  Fragen zur iOS-Entwicklung (4)

Fragen zur iOS-Entwicklung (4)

黄舟
黄舟Original
2017-01-20 09:29:321074Durchsuche

32. UIImage+Scale-Zoombild
UIImage kann Bilder laden, aber wir möchten ein verkleinertes oder vergrößertes Bild erhalten, was mit UIImage nicht möglich ist. Als nächstes fügen wir eine UIImage-Klassifizierung hinzu, um das Vergrößern und Vergrößern von UIImage-Bildern zu implementieren aus.
Erstellen Sie zunächst eine UIImage+Scale-Klasse.
Dann implementieren Sie die Methode dieser Klasse:

#import <UIKit/UIKit.h>
@interface UIImage (scale)
-(UIImage*)scaleToSize:(CGSize)size;
@end
#import "UIImage+Scale.h"
@implementation UIImage (scale)
-(UIImage*)scaleToSize:(CGSize)size
{
// 创建一个bitmap的context
// 并把它设置成为当前正在使用的context
UIGraphicsBeginImageContext(size);
// 绘制改变大小的图片
[self drawInRect:CGRectMake(0, 0, size.width,size.height)];
// 从当前context中创建一个改变大小后的图片
UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
// 使当前的context出堆栈
UIGraphicsEndImageContext();
// 返回新的改变大小后的图片
return scaledImage;
}
@end

Schließlich die Verwendung dieser Klasse:

#import "UIImage+Scale.h"
[[UIImage imageNamed:”p.png”] scaleToSize:CGSizeMake(252.0f,192.0f)];

33. Kerndiagramm: in großen Mengen Im Punktdiagramm wird legendTitleForBarPlot nicht aufgerufen.
legendTitleForBarPlot ist die Datenquellenmethode des Balkendiagramms. Im Datenquellendelegaten CPTScatterPlotDataSource des Streudiagramms gibt es keine solche Methode. Die einzige Möglichkeit, den Titel der Legende anzupassen, besteht darin, das Titelattribut der Handlung anzugeben. Wenn der Titel leer ist, wird das Bezeichnerattribut verwendet.

34. setHidesBackButton kann die Zurück-Schaltfläche nicht ausblenden
Verschieben Sie setHidesBackButton:animated: in die viewDidAppear:-Methode statt in die viewWillAppear:- oder viewDidLoad-Methode.

35. Protokolldeklaration NSURLConnectionDelegate kann nicht gefunden werden
Ab iOS5 war NSURLConnectionDelegate veraltet. In NSURLConnection.h wurden diese Methoden zu einem informellen Protokoll. Gleichzeitig wird eine Kopie dieser Methoden in das offizielle Protokoll NSURLConnectionDataDelegate kopiert. Sie können das in der Klassenschnittstelle deklarierte 6c7586e62da791676357131c39ce00fc direkt löschen und diese Methoden implementieren, um das informelle Protokoll zu verwenden.
36. Warnung „Der synthetisierte Getter der Eigenschaft folgt der Cocoa-Namenskonvention für die Rückgabe von „eigenen“ Objekten.“
In zu synthetisierenden Eigenschaften darf der Attributname nicht mit „new“ beginnen, z. B. „newFeature“.
37. Die implizite Deklaration der Funktion „xxx“ ist in C99 ungültig.
Dies ist ein Fehler in Xcode. Dieser Fehler wird gemeldet, wenn der Compiler zum ersten Mal eine Funktionsdefinition sieht, aber den Funktionsprototyp nicht findet. Die Lösung besteht darin, die Funktionsprototypdeklaration vor der Funktionsdefinition hinzuzufügen. Beachten Sie, dass die Funktionsprototyp-Deklarationsanweisung in die Schnittstellendeklaration der Klasse (.h-Header-Datei) oder vor der Klassenimplementierungsanweisung (.m-Datei) eingefügt wird.
38. -[UIImageresizableImageWithCapInsets:]: unbekannter Selektor
Diese Methode ist neu in iOS5, verwenden Sie bitte die stretchableImageWithLeftCapWidth:topCapHeight:-Methode. Code:

if([img respondsToSelector:@selector(resizableImageWithCapInsets:)])
{//for iOS 5+
img=[srcImg resizableImageWithCapInsets:UIEdgeInsetsMake(0, 6, 0, 6)]; 
}else{//iOS 4 compatibility
img=[srcImg stretchableImageWithLeftCapWidth:6 topCapHeight:0];
}

39. Berechnen Sie die Zeichenfolgengröße der angegebenen Schriftart.

CGSizemaximumLabelSize = CGSizeMake(250 ,MAXFLOAT);
CGSizeexpectedLabelSize = [LABEL.text sizeWithFont:[UIFontsystemFontOfSize:UILabel.font]
constrainedToSize:maximumLabelSize
lineBreakMode:UILineBreakModeWordWrap];

expectedLabelSize ist der tatsächliche Wert, der basierend auf der Schriftart und der maximalen Größenbeschränkung berechnet wird und Zeilenumbruchmodusgröße.
40. Die ASIHTTPRequest-Methode „clearDelegateAndCancel“ führt zum Absturz des Programms.
ASIHTTPRequest hält das Delegate-Objekt nicht. Wenn Sie eine Anfrage abbrechen oder den Delegaten freigeben, sollten wir die Anfrage abbrechen . Die Methode „clearDelegateAndCancel“ verursacht jedoch einen Fehler beim Aufruf des freigegebenen Objekts und einen Absturz.
Um dies zu vermeiden, sollten Sie (für Versionen 1.8.1 und früher):
Das ASIHTTPRequest-Objekt im Delegaten halten
Wenn Sie den Delegaten freigeben oder die Anfrage abbrechen, rufen Sie nicht „clearDelegateAndCancel“ auf, sondern verwenden Sie „[; requestrelease],request=nil;".
41. Castof 'int' to 'CAMediaTimingFunction *' ist mit ARC nicht zulässig
Der folgende Code verursacht den obigen Fehler:

transition.timingFunction= UIViewAnimationCurveEaseInOut;

Tatsächlich sogar im MRC (manueller Speicher). Management) ist dieser Code ebenfalls falsch. Der Grund, warum kein Fehler auftritt, liegt darin, dass UIViewAnimationCurveEaseInOut normalerweise 0 ist und bei der Konvertierung Null wird. Tatsächlich sollte dieser Code wie folgt geändert werden:

[animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut]];


Das Obige ist der Inhalt der iOS-Entwicklungsfragen (4). Weitere verwandte Inhalte finden Sie hier die chinesische PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Fragen zur iOS-Entwicklung (3)Nächster Artikel:Fragen zur iOS-Entwicklung (3)