J'ai créé une extension pour la classe UIButton. Maintenant, si je l'utilise tout fonctionne bien. Mais j'ai une autre classe qui crée pour moi un tableau avec des objets UIButton et j'ai un problème ici.Problèmes liés à la catégorie UIButton
J'ai la classe Helper avec la méthode qui retourne pour moi tableau avec des objets UIButton.
Dans ViewController.m en rappel viewDidLoad Je demande à ce tableau et aussi ici ViewController.m importer mes UIButton + Extension.m
Donc, maintenant j'ai extension pour chaque objet que je vais UIButton utilise dans ViewController.m
mais si j'utilise l'extension que j'ai erreur sur la méthode qui appellent
[thumbButton.titleLabel setFont:[UIFont fontWithName:@"Helvetica" size:11.0]];
mais si je ne l'utilise pas l'extension de cette méthode Invoke correcte.
ceci est mon UIButton + Extension.h fichier
#import <UIKit/UIKit.h>
@interface UIButton (extension_button)
- (void)centerButtonToView:(UIView *)view;
- (UIImage *)cropeImage:(UIImageView *)imageView;
@end
c'est mon UIButton + Extension.m fichier
#import "UIButton+Extension.h"
@implementation UIButton (extension_button)
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (void)centerButtonToView:(UIView *)view {
CGRect rect = view.frame;
CGRect rectSelf = self.frame;
rectSelf.origin.x = (rect.size.width/2.0f - rectSelf.size.width/2.0f) + rect.origin.x;
rectSelf.origin.y = (rect.size.height/2.0f - rectSelf.size.height/2.0f) + rect.origin.y;
self.frame = rectSelf;
}
- (UIImage *)cropeImage:(UIImageView *)imageView {
CGRect rect;
rect.origin.x = self.frame.origin.x - imageView.frame.origin.x;
rect.origin.y = self.frame.origin.y - imageView.frame.origin.y;
rect.size.width = self.frame.size.width;
rect.size.height = self.frame.size.height;
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect drawRect = CGRectMake(-rect.origin.x,-rect.origin.y, imageView.image.size.width, imageView.image.size.height);
CGContextClipToRect(context, CGRectMake(0, 0, rect.size.width, rect.size.height));
[imageView.image drawInRect:drawRect];
UIImage* subImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return subImage;
}
@end
Helper.m (méthode retour tableau pour moi et ici je problème sur la méthode de setFont)
+ (NSMutableArray *)createThumbnailsForCropSize {
CGFloat width = 0.0f;
CGFloat start_pos = 0.0f;
if (IS_IPHONE) {
width = 320.0f;
start_pos = 62.0f;
}
else {
width = 768.0f;
start_pos = 286.0f;
}
NSMutableArray *arr = [[NSMutableArray alloc] init];
NSArray *resolutionArray = [NSArray arrayWithObjects:@"30x40",@"33x48",@"35x40",@"35x45",@"36x47",@"37x47",
@"40x50",@"40x60",@"43x55",@"45x50",@"50x50",@"50x70", nil];
NSInteger pos_x = start_pos;
NSInteger page = 0;
for (NSInteger idx = 0; idx < 12; idx++) {
if (idx%3 == 0 && idx != 0) {
page++;
pos_x = start_pos + width * page;
}
UIButton *thumbButton = [[UIButton alloc] init];
[thumbButton setTag:idx];
[thumbButton setFrame:CGRectMake(pos_x, 13, 60, 60)];
[thumbButton setTitle:[NSString stringWithFormat:[resolutionArray objectAtIndex:idx]] forState:UIControlStateNormal];
[thumbButton.titleLabel setFont:[UIFont fontWithName:@"Helvetica" size:11.0]];
[thumbButton setTitle:@"!00" forState:UIControlStateNormal];
[thumbButton setBackgroundImage:[UIImage imageNamed:@"block_without_photo.png"] forState:UIControlStateNormal];
[arr addObject:thumbButton];
pos_x += 68;
}
return arr;
}
oui merci je l'ai fait –
'UIButton' n'est pas un cluster de classe. Sa méthode de classe 'buttonWithType:' pourrait ne pas retourner une instance de votre sous-classe, mais les méthodes de la famille 'init' le feront. –