Използвайте метода на UILabel Class по различен начин за Two Label

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

person Sam    schedule 12.03.2014    source източник
comment
можете да създадете mutalbearray с числа, например от 1 до 11. разбъркайте масива. извлечете първия и задайте вмъкването за него. повтаряйте, докато масивът съдържа обекти.   -  person Anoop Vaidya    schedule 12.03.2014
comment
да, но не е статичен, така че не мога да приема този вид масив. защото първо етикетът е разпределение от този клас UILabel и след това всичко ще работи. и в моя случай с разпределението ще се извика методът на целия клас. трябва да получа разлика в разпределението на етикетите.   -  person Sam    schedule 12.03.2014


Отговори (1)


Направете стойността на вмъкванията на ръба свойство на вашия подклас етикет и задайте вмъкванията, когато създавате етикетите. Използвайте свойството, когато рисувате, вместо да създавате локална стойност.

person jrturton    schedule 12.03.2014
comment
Придържам се към отговора си. Питаш ли ме за код или има нещо, което не разбираш? - person jrturton; 12.03.2014