我需要从我收到的电子邮件数组中创建一个类似下面的视图,它也有删除选项。
类似于gmail的邮件收件人的东西,除了我的这个应该是scrollview。我的主要问题是使用删除按钮创建背景,该按钮根据电子邮件长度延伸。我目前的方法是使用3个图像作为开头,一个作为结尾使用删除按钮,一个通常用于中间将拉伸。有没有其他或更好的方法来做到这一点?
注意:需要iOS 5及更高版本的支持
答案 0 :(得分:0)
在这里,我为你创建了一个SuperLabel
,虽然它可能需要一些调整..但它肯定会对你有帮助..
SuperLabel.h
#import <UIKit/UIKit.h>
@interface SuperLabel : UIView
- (id)initWithFrame:(CGRect)frame andTitle:(NSString *)title;
@end
SuperLabel.m
#import "SuperLabel.h"
#define MAX_HEIGHT 25.0
@implementation SuperLabel
- (id)initWithFrame:(CGRect)frame andTitle:(NSString *)title
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
//Design your label view
self.backgroundColor=[UIColor colorWithRed:.8 green:.8 blue:.8 alpha:1.0];
self.layer.borderColor=[[UIColor orangeColor] CGColor];
self.layer.borderWidth=1.0;
self.layer.cornerRadius=5.0;
//Add a Label
UILabel *label=[[UILabel alloc] initWithFrame:CGRectMake(5.0, 5.0, 100.0, MAX_HEIGHT)];
label.font=[UIFont systemFontOfSize:12.0];
label.textColor=[UIColor grayColor];
label.text=title;
[label sizeToFit];
[self addSubview:label];
//We will get resized frame after using sizeToFit after setting the text in the label.
CGRect rect=label.frame;
//Add a button
UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
[btn setTitle:@"x" forState:UIControlStateNormal];
btn.titleLabel.font=[UIFont systemFontOfSize:12.0];
btn.titleLabel.textColor=[UIColor grayColor];
rect.origin.x=rect.origin.x+rect.size.width;
rect.origin.y=0;
rect.size=CGSizeMake(25.0, MAX_HEIGHT);
[self addSubview:btn];
[btn addTarget:self action:@selector(deleteMe:) forControlEvents:UIControlEventTouchDragInside];
btn.frame=rect;
//Change the whole frame of the label view
frame.size.height=MAX_HEIGHT;
frame.size.width=btn.frame.origin.x+btn.frame.size.width;
self.frame=frame;
}
return self;
}
-(IBAction)deleteMe:(id)sender{
[self removeFromSuperview];
}
@end
最后使用以下代码添加到您的视图中。
SuperLabel *label=[[SuperLabel alloc] initWithFrame:CGRectZero andTitle:@"myemail@gmail.com"];
[self.view addSubview:label];
干杯..