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

Questions de développement iOS (4)

黄舟
黄舟original
2017-01-20 09:29:321143parcourir

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

Enfin, l'utilisation de cette classe :

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

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 6c7586e62da791676357131c39ce00fc 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];
}

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];

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;

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]];


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) !


Déclaration:
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