Maison > développement back-end > tutoriel php > Questions de développement iOS (4)

Questions de développement iOS (4)

黄舟
Libérer: 2023-03-05 06:30:02
original
1223 Les gens l'ont consulté

32. UIImage Mise à l'échelle des images
UIImage peut charger des images, mais nous voulons obtenir une image réduite ou agrandie, ce qui ne peut pas être fait avec UIImage. Ensuite, nous ajoutons une classification UIImage pour implémenter les images dans UIImage de zoom avant. et dehors.
Tout d’abord, créez une classe UIImage Scale.
Ensuite, implémentez la méthode de cette classe :

#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
Copier après la connexion

Enfin, l'utilisation de cette classe :

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

33. Coreplot : en vrac Dans le graphique à points, legendTitleForBarPlot ne sera pas appelé
legendTitleForBarPlot est la méthode de source de données de l'histogramme. Il n'existe pas de méthode de ce type dans le délégué de source de données CPTScatterPlotDataSource du nuage de points. La seule façon de personnaliser le titre de la légende est de spécifier l'attribut title de l'intrigue. Si le titre est vide, l'attribut identifiant est utilisé.

34. setHidesBackButton ne peut pas masquer le bouton retour
Déplacez setHidesBackButton:animated: vers la méthode viewDidAppear: plutôt que dans la méthode viewWillAppear: ou viewDidLoad.

35. Impossible de trouver la déclaration de protocole NSURLConnectionDelegate
À partir d'iOS5, NSURLConnectionDelegate est obsolète dans NSURLConnection.h, ces méthodes sont devenues des protocoles informels. Dans le même temps, une copie de ces méthodes est copiée dans le protocole officiel NSURLConnectionDataDelegate. Vous pouvez directement supprimer le déclaré dans l'interface de classe et implémenter ces méthodes pour utiliser le protocole informel.
36. Avertissement "Le getter synthétisé de la propriété suit la convention de dénomination Cocoa pour renvoyer les objets 'possédés'"
Dans les propriétés à synthétiser, le nom de l'attribut ne doit pas commencer par "new", tel que "newFeature".
37. La déclaration implicite de la fonction 'xxx' n'est pas valide en C99
Il s'agit d'un bug dans Xcode. Cette erreur sera signalée lorsque le compilateur verra une définition de fonction pour la première fois mais ne trouvera pas le prototype de fonction. La solution consiste à ajouter la déclaration du prototype de fonction avant la définition de la fonction. Notez que l'instruction de déclaration du prototype de fonction est insérée dans la déclaration d'interface de la classe (fichier d'en-tête .h), ou avant l'instruction d'implémentation de la classe (fichier .m).
38. -[UIImageresizingImageWithCapInsets:] : sélecteur non reconnu
Cette méthode est nouvelle dans iOS5 Dans iOS4, veuillez utiliser la méthode stretchableImageWithLeftCapWidth:topCapHeight:. 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];
}
Copier après la connexion

39. Calculer la taille de la chaîne de la police spécifiée

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

expectedLabelSize est la valeur réelle calculée en fonction de la police, limite de taille maximale. et le mode nouvelle ligne Taille.
40. La méthode ASIHTTPRequest clearDelegateAndCancel provoque le crash du programme
ASIHTTPRequest ne contient pas l'objet délégué Lorsque vous annulez une demande ou libérez le délégué, afin d'éviter d'appeler la méthode délégué libérée, nous devons annuler la demande. . Mais la méthode clearDelegateAndCancel provoquera une erreur d’appel d’objet désalloué et un crash.
Pour éviter cela, vous devez (pour les versions 1.8.1 et antérieures) :
Conserver l'objet ASIHTTPRequest dans le délégué
Lors de la libération du délégué ou de l'annulation de la demande, ne pas appeler clearDelegateAndCancel mais utiliser " [ requestrelease],request=nil;".
41. Castof 'int' vers 'CAMediaTimingFunction *' n'est pas autorisé avec ARC
Le code suivant provoque l'erreur ci-dessus :

transition.timingFunction= UIViewAnimationCurveEaseInOut;
Copier après la connexion

En fait, même dans MRC (mémoire manuelle gestion), ce code est également incorrect. La raison pour laquelle il n'y a pas d'erreur est que UIViewAnimationCurveEaseInOut est généralement 0 et devient nul une fois converti. En fait, ce code doit être modifié comme suit :

[animationsetTimingFunction:[CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
Copier après la connexion


Ce qui précède est le contenu des questions de développement iOS (4). Pour plus de contenu connexe, veuillez faire attention à. le site PHP chinois (www .php.cn) !


Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal