Heim > Backend-Entwicklung > PHP-Tutorial > Fragen zur iOS-Entwicklung (4)

Fragen zur iOS-Entwicklung (4)

黄舟
Freigeben: 2023-03-05 06:30:02
Original
1139 Leute haben es durchsucht

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
Nach dem Login kopieren

Schließlich die Verwendung dieser Klasse:

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

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 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];
}
Nach dem Login kopieren

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

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

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;
Nach dem Login kopieren

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]];
Nach dem Login kopieren


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


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage