В моето приложение имам изглед за превъртане, който показва динамично генерирани етикети (някои имат 70px височина, а други имат 50px височина).
трябва да използвам метода - (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)];