然后我们来写:TypeSelectView
这个比较简单,我们只要只要每个TypeView的位置,然后作为自己的subview就好了
@interface TypeSelectView : UIView @property(nonatomic) BOOL bShown; @property(nonatomic, strong) TypeView* curSelectedView; -(id)initWithFrame:(CGRect)frame searchType:(int)type; @end
-(id)initWithFrame:(CGRect)frame searchType:(int)type
{
self = [super initWithFrame:frame];
if (self) {
_bShown = NO;
self.backgroundColor = [UIColor clearColor];
CGRect rcBg = frame;
rcBg.origin.y = 0.0f;
rcBg.origin.x = 0.0f;
UIImageView *bgImageView = [[UIImageView alloc] initWithFrame:rcBg];
bgImageView.image = [UIImage imageNamed:@"change_icon_bg.png"];
[self addSubview:bgImageView];
CGRect typeRc =CGRectMake(4.0f, 0.0f, TypeView_Width, TypeView_Height);
for (int i = 0; i < 4; i++) {
TypeView *curTypeView = [[TypeView alloc] initWithFrame:typeRc];
curTypeView.typesView = self;
curTypeView.typeId = i;
if (i == type) {
curTypeView.bSelected = YES;
self.curSelectedView = curTypeView;
}
[self addSubview:curTypeView];
if (i == 3) {
typeRc.origin.x = 4.0f;
typeRc.origin.y = 78.0f;
}else {
typeRc.origin.x += 314.0f/4;
}
}
}
return self;
}
@interface TopBarView : UIView -(void)layoutViews; @property(nonatomic,strong)TopBarControllerViewController* myViewController; @property(nonatomic)UIButton* button; @property(nonatomic)UITextField* textField; @property (nonatomic, strong) TypeSelectView *topTypesView; -(void)onclick; @end
-(void)layoutViews{
self.clipsToBounds = YES;
_topTypesView.bShown = NO;
TypeSelectView* tmpType = [[TypeSelectView alloc] initWithFrame:[[HomePageUIManager sharedInstance] searchTypesOriginFrame] searchType:0];
_topTypesView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin;
_topTypesView = tmpType;
//这样写_topTypesView在这些view的后面
[[MyViewController sharedInstance].view insertSubview:_topTypesView belowSubview:self];- (CGRect)searchTypesOriginFrame
{
return CGRectMake(0.0f, 44.0f- 80.0f, 320.0f, 80.0f);
}- (CGRect)searchTypesShowFrame
{
return CGRectMake(0.0f, 44.0f, 320.0f, 80.0f);
}
- (void)toShowTypesView {
_topTypesView.frame = [[HomePageUIManager sharedInstance] searchTypesOriginFrame];
[UIView beginAnimations:@"ShowTypes" context:NULL];
[UIView setAnimationDuration:0.4f];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
_topTypesView.bShown = YES;
_topTypesView.frame = [[HomePageUIManager sharedInstance] searchTypesShowFrame];
[UIView commitAnimations];
}- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
<strong>// self.view.backgroundColor = [MyViewController RGBColorFromHexString:@"#eeeeee" alpha:1.0f];//特别注意不要加这句,如果加上会使MyViewController去执行viewdidload会导致程序崩溃</strong>
}
return self;
}
//单例的写法
+ (MyViewController *)sharedInstance
{
static MyViewController *_sharedInstance = nil;
if (_sharedInstance == nil)
_sharedInstance = [[MyViewController alloc] initWithNibName:nil bundle:nil];
return _sharedInstance;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
CGRect rcSearchBar = [[HomePageUIManager sharedInstance] searchBarViewFrame];
TopBarView *tmpView = [[TopBarView alloc] initWithFrame:rcSearchBar];
[tmpView layoutViews];
[self.view addSubview:tmpView];
UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 44, 320,2)];
view.backgroundColor = [UIColor grayColor];
[self.view addSubview:view];
}
IOS的一个带动画的多项选择的控件(二),布布扣,bubuko.com
原文地址:http://blog.csdn.net/baidu_nod/article/details/37886587