iOS开发 自绘窗口的思路

自绘窗口类

HeaderViewController.h文件


#import <UIKit/UIKit.h>

@interface ImageButton : UIControl


@property(strong,nonatomic) UIImageView *imageView;

@property(strong,nonatomic) UILabel *label;


@end


@class HeaderViewController;

@protocol HeadViewDelegate <NSObject>


@required

-(void)headView:(HeaderViewController*)view touchDown:(NSInteger)index;


@end


@class ImageButton;

@interface HeaderViewController : UIView

{

    NSInteger currentSelected;

    NSArray *imageArray;    

    ImageButton *priorBtn;

}


@property (nonatomic, weak, readwrite) id <HeadViewDelegate> delegate;


-(id)initWithFrame:(CGRect)frame AndCurrentSelected:(NSInteger)index;


@end


HeaderViewController.m文件


#import "HeaderViewController.h"


@implementation HeaderViewController


- (id)initWithFrame:(CGRect)frame

{

       return [self initWithFrame:frame AndCurrentSelected:currentSelected];

}


-(id)initWithFrame:(CGRect)frame AndCurrentSelected:(NSInteger)index

{

    if ((self = [super initWithFrame:frame]))

{

        currentSelected = index;

}

    

return self;

}



# pragma mark - Drawing


-(void)drawRect:(CGRect)rect

{

    // 整体背景

    UIImage *image = [UIImage imageNamed:@"nav_top_bg.jpg"];

    [image drawInRect:rect];

    

    // 添加button

    NSMutableDictionary *imgDic = [NSMutableDictionary dictionaryWithCapacity:2];

    [imgDic setObject:[UIImage imageNamed:@"nav_top_rm_unpress.png"] forKey:@"Default"];

    [imgDic setObject:[UIImage imageNamed:@"nav_top_rm_press.png"] forKey:@"Seleted"];

    NSMutableDictionary *imgDic2 = [NSMutableDictionary dictionaryWithCapacity:2];

    [imgDic2 setObject:[UIImage imageNamed:@"nav_top_fl_unpress.png"] forKey:@"Default"];

    [imgDic2 setObject:[UIImage imageNamed:@"nav_top_fl_press.png"] forKey:@"Seleted"];

    NSMutableDictionary *imgDic3 = [NSMutableDictionary dictionaryWithCapacity:2];

    [imgDic3 setObject:[UIImage imageNamed:@"nav_top_ph_unpress.png"] forKey:@"Default"];

    [imgDic3 setObject:[UIImage imageNamed:@"nav_top_ph_press.png"] forKey:@"Seleted"];

    NSMutableDictionary *imgDic4 = [NSMutableDictionary dictionaryWithCapacity:2];

    [imgDic4 setObject:[UIImage imageNamed:@"nav_top_ss_unpress.png"] forKey:@"Default"];

    [imgDic4 setObject:[UIImage imageNamed:@"nav_top_ss_press.png"] forKey:@"Seleted"];

    NSMutableDictionary *imgDic5 = [NSMutableDictionary dictionaryWithCapacity:2];

    [imgDic5 setObject:[UIImage imageNamed:@"nav_top_jg_unpress.png"] forKey:@"Default"];

    [imgDic5 setObject:[UIImage imageNamed:@"nav_top_jg_press.png"] forKey:@"Seleted"];

    imageArray = [NSArray arrayWithObjects:imgDic,imgDic2,imgDic3,imgDic4,imgDic5,nil];

    

    NSArray *titleA = [NSArray arrayWithObjects:@"热门",@"分类",@"排行",@"搜索",@"荐购",nil];

    

    ImageButton *imagebtn;

    for (int i = 0; i < [imageArray count]; i++)

    {

        imagebtn = [[ImageButton alloc] initWithFrame:CGRectMake(15+60*i, 2, 60, 50)];

        imagebtn.tag = i;

        imagebtn.backgroundColor = [UIColor clearColor];

        [imagebtn addTarget:self action:@selector(topClick:) forControlEvents:UIControlEventTouchUpInside];

        [imagebtn addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown];

        imagebtn.label.text = [titleA objectAtIndex:i];

        [self addSubview:imagebtn];

        

        

        if (i == currentSelected)

        {

            [imagebtn setSelected:YES];

            priorBtn = imagebtn;

        }

        

        [self updateCurrentButton:imagebtn];

    }


}


// 点击热门导航按下时触发事件 更改背景图

- (void)touchDown:(id)sender

{

    ImageButton *btn=(ImageButton *)sender;

    if (priorBtn == btn)

    {

        // 点击相同操作不做处理

        return;

    }

    else

    {

        // 取消前次操作的button设置

        [priorBtn setSelected:NO];

        // 更改当前button设置

        [btn setSelected:YES];

    }

    

    [self updateCurrentButton:btn];

}



// 点击热门导航事件 抬起时事件处理 进行场景切换

- (void)topClick:(id)sender

{

    ImageButton *btn=(ImageButton *)sender;

    

    if (priorBtn == btn)

    {

        // 点击相同操作不做处理

        return;

    }

    else

    {

        priorBtn = btn;

    }

    [self updateCurrentButton:btn];

    

    [_delegate headView:self touchDown:btn.tag];

}


-(void)updateCurrentButton:(ImageButton*)imagebutton

{

    NSInteger index = imagebutton.tag;

    NSInteger priorIndex = priorBtn.tag;

    // 选中字体颜色设置

    UIColor *tintColor = [UIColor colorWithRed:(0/255) green:(255/255) blue:(255/255) alpha:1.0];

    

    if (index != priorIndex)

    {

        if (priorBtn.selected == YES)

        {

            priorBtn.imageView.image = [[imageArray objectAtIndex:priorIndex] objectForKey:@"Seleted"];

            imagebutton.label.textColor = tintColor;

        }

        else

        {

            priorBtn.imageView.image = [[imageArray objectAtIndex:priorIndex] objectForKey:@"Default"];

            priorBtn.label.textColor = [UIColor whiteColor];

        }


    }

    

    if (imagebutton.selected == YES)

    {

        imagebutton.imageView.image = [[imageArray objectAtIndex:index] objectForKey:@"Seleted"];

        imagebutton.label.textColor = tintColor;

    }

    else

    {

        imagebutton.imageView.image = [[imageArray objectAtIndex:index] objectForKey:@"Default"];

        imagebutton.label.textColor = [UIColor whiteColor];

    }


}



@end


@implementation ImageButton


-(id)initWithFrame:(CGRect)frame

{

    if ((self = [super initWithFrame:frame]))

{

        _imageView = [[UIImageView alloc] init];

        _imageView.frame = CGRectMake(10, 2, 30, 30);

        [self addSubview:_imageView];

        

        _label = [[UILabel alloc] init];

        _label.font = [UIFont fontWithName:@"ArialMT" size:10.0f];

        _label.frame = CGRectMake(10, 32, 30, 10);

        _label.textAlignment = NSTextAlignmentCenter;

        _label.autoresizingMask = UIViewAutoresizingFlexibleWidth;

        [self addSubview:_label];

    }

    


    

    return self;

}


@end


主窗口添加

#import "RootViewController.h"

#import "HeaderViewController.h"


@interface RootViewController ()<HeadViewDelegate>


@end


@implementation RootViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    

    // 设置窗口背景

    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"fl_bg.jpg"]];

    

    // 添加顶部导航栏

    CGRect headViewRect = self.view.bounds;

    headViewRect.origin.y = 20;

    headViewRect.size.height = 44;

    HeaderViewController *headView = [[HeaderViewController alloc] initWithFrame:headViewRect AndCurrentSelected:0];

    [self.view addSubview:headView];

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


#pragma mark HeadViewDelegate methods

-(void)headView:(HeaderViewController *)view touchDown:(NSInteger)index

{

    ...

}


@end






Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值