В моем приложении у меня есть прокрутка, которая показывает динамически генерируемые метки (некоторые имеют высоту 70 пикселей, а некоторые - 50 пикселей).
Мне нужно использовать метод - (void) drawRect: (CGRect) rect для обоих типов меток.
для этого я создал один класс контроллера UILabel и в нем есть метод
- (void)drawRect:(CGRect)rect
{
// Drawing code
NSLog(@"draw rect in uilabel class");
UIEdgeInsets insets = {0, 0, -14, 0};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
мне нужно установить вставки одной метки = {0, 0, -14, 0}; и другой ярлык {0, 0, -22, 0};
, но случайным образом (означает, что для ярлыка 1, 2, 4, 6, 9 дно будет -14, а для 3,5,7,8,10,11 дно будет -22).
да, я могу сделать это, поместив два класса UILabel и получив от него объект.
но мне нужно использовать методы этого класса для двух типов меток.
теги бесполезны, я их использовал.
Я бы хотел сделать что-нибудь подобное
- (void)drawRect:(CGRect)rect
{
// Drawing code
if(for label one){
UIEdgeInsets insets = {0, 0, -14, 0};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
else if(for label Two){
UIEdgeInsets insets = {0, 0, -22, 0};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
}
любая идея, код, ссылка, учебник будут отличным подспорьем ...
------------ РЕДАКТИРОВАТЬ: ----------------------------- ------
#import <UIKit/UIKit.h>
@interface LabelInListViewClass : UILabel
@end
и в файле .m
#import "LabelInListViewClass.h"
@implementation LabelInListViewClass
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
NSLog(@"in Label Class");
}
return self;
}
- (void)drawRect:(CGRect)rect
{
// Drawing code
UIEdgeInsets insets = {0, 0, -14, 0};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
и в файле ViewController .m
label1 = [[LabelInListViewClass alloc] initWithFrame:CGRectMake(16,varForHeight,320, 50)];
label2 = [[LabelInListViewClass alloc] initWithFrame:CGRectMake(16,varForHeight,320, 70)];