在我的应用程序中,我有一个滚动视图,显示动态生成的标签(有些 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)];
答案 0 :(得分:0)
使edge insets值成为标签子类的属性,并在创建标签时设置insets。在绘制时使用该属性而不是创建本地值。