ios 中UIViewController的分类

本文介绍了一种在iOS应用中自定义导航栏的方法,通过在UIViewController中扩展实现,包括设置背景图片、添加返回按钮及标题标签等,并实现了屏幕适配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#import <UIKit/UIKit.h>

#define TOPVIEWTAG 0x10000  // 导航栏的图片


@interface UIViewController (Chnbs)


-(void)setupTopNavigationView;
-(void)resizeNavigationView;


-(CGRect)CGRectMake;

-(void)showMessage:(NSString*)message;


@en
======================
@implementation UIViewController (Chnbs)



-(void)setupTopNavigationView{
    self.navigationController.navigationBarHidden = YES;
    UIView *tpNavView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)];
    tpNavView.tag = TOPVIEWTAG;
    [self.view addSubview:tpNavView];
    [tpNavView release];

    
    UIImageView *navImageView = [UIImageView ImageViewImageName:@"top_navigation_image.png" frame:tpNavView.bounds];
    navImageView.tag = 10010;
    [tpNavView addSubview:navImageView];
    

    
    UILabel *label = [UILabel LabWithFrame:tpNavView.bounds text:self.title textColor:[UIColor whiteColor] textAlign:NSTextAlignmentCenter font:[UIFont boldSystemFontOfSize:22]];
    [tpNavView addSubview:label];
    label.tag=10020;
    UIButton *back = [UIButton ButtonWithImageName:@"btn_back_image.png" hImageName:@"btn_back_image.png" frame:CGRectMake(5, 6, 45, 32)
                                             title:nil titleColor:nil font:nil target:self action:@selector(backButtonAction:)];
    back.tag = 0x404;
    [tpNavView addSubview:back];
    
    //FIX 添加导航的屏幕自动适配
    tpNavView.autoresizingMask=UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleWidth;
    navImageView.autoresizingMask=UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleWidth;
    label.autoresizingMask=UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
}

-(void)resizeNavigationView{
    UIView *topView = ASDynamicCast(UIView, [self.view viewWithTag:TOPVIEWTAG]);
    topView.frame = CGRectMake(0, 0, self.view.bounds.size.width, 44);
    
    UIImageView *image = ASDynamicCast(UIImageView, [topView viewWithTag:10010]);
    image.frame = topView.bounds;
    UILabel *tLab = ASDynamicCast(UILabel, [topView viewWithTag:10020]);
    tLab.frame = topView.bounds;
    
    UIButton *back = ASDynamicCast(UIButton, [topView viewWithTag:0x404]);
    back.frame = CGRectMake(5, 6, 45, 32);
}

-(void)backButtonAction:(id)sender{
    [self.navigationController popViewControllerAnimated:YES];
}

-(CGRect)CGRectMake{
    CGRect topViewRec,bottonViewRec;
    CGRectDivide(self.view.bounds, &topViewRec, &bottonViewRec, 44, CGRectMinYEdge);
    return bottonViewRec;
}


-(void)showMessage:(NSString*)message{
    if ([message length] > 0) {
        UIAlertView *av = [[UIAlertView alloc] initWithTitle:nil message:message delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [av show];
        [av release];
    }

}



@end

 

转载于:https://www.cnblogs.com/gcb999/p/3229745.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值