美文网首页iOS 开发 Objective-C
iOS Tabbar 实现自定义图片 放置用户头像

iOS Tabbar 实现自定义图片 放置用户头像

作者: 望穿秋水小作坊 | 来源:发表于2019-03-22 15:56 被阅读2次

最近产品脑洞大开,需要在 tabbar “我的” 里面放置用户头像的需求。如下图:


效果图

思路先看设置 tabbarItem 代码找思路:

    UITabBarItem *item4 = [[UITabBarItem alloc] initWithTitle:@"我"
                                        image:[[UIImage imageNamed:@"tab_me_normal"]
                                 imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
                                selectedImage:[[UIImage imageNamed:@"tab_me_click"]
                       imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

分析代码我们可以知道,入口只有 image 和 selectImage,那我们只能把圆角和和边框绘制好了再放进去了。

第一步:缩放头像至合适大小:

+ (UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)reSize
{
    UIGraphicsBeginImageContext(CGSizeMake(reSize.width, reSize.height));
    [image drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)];
    UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return reSizeImage;
}

第二步:绘制成圆形 以及添加圆角:

+ (UIImage *)imageWithBorderW:(CGFloat)borderW borderColor:(UIColor *)color image:(UIImage *)image{
    //- 1.开启一个和原始图片一样大小的位图上下文.
    CGSize size = CGSizeMake(image.size.width + 2 *borderW, image.size.height + 2 * borderW);
    UIGraphicsBeginImageContextWithOptions(size,NO,0);
    //-  2.绘制一个大圆,填充
    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, size.width, size.height)];
    [color set];
    [path fill];
    //-  3.添加一个裁剪区域.
    path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(borderW, borderW, image.size.width, image.size.height)];
    [path addClip];
    //-  4.把图片绘制到裁剪区域当中.
    [image drawAtPoint:CGPointMake(borderW, borderW)];
    //-  5.生成一张新图片.
    UIImage *clipImage = UIGraphicsGetImageFromCurrentImageContext();
    //-  6.关闭上下文.
    UIGraphicsEndImageContext();
    return clipImage;
}

最后调用代码更新 tabbarItem

NSString *avartUrl = [DDLoadRemoteImageHelper wrapString:[DDGlobalData sharedData].userModel.avatar];
[[SDWebImageDownloader sharedDownloader] downloadImageWithURL:[NSURL URLWithString:avartUrl] options:0 progress:^(NSInteger receivedSize, NSInteger expectedSize, NSURL * _Nullable targetURL) {
    
} completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, BOOL finished) {
    NSLog(@"image avatar download success");
    image = [DDAppHelper reSizeImage:image toSize:CGSizeMake(20, 20)];
    UIImage *normalImage =[DDAppHelper imageWithBorderW:2 borderColor:[UIColor colorWithHexString:@"B4B7B9"] image:image];
    normalImage = [normalImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    
    UIImage *selectImage =[DDAppHelper imageWithBorderW:2 borderColor:[UIColor colorWithHexString:@"13BD71"] image:image];
    selectImage = [selectImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

    [DDGlobalData sharedData].item4.image = normalImage;
    [DDGlobalData sharedData].item4.selectedImage = selectImage;
}];

大功告成~~!

实际效果

码字不易,如果帮到您,请点个赞再走呗。😑

相关文章

  • iOS Tabbar 实现自定义图片 放置用户头像

    最近产品脑洞大开,需要在 tabbar “我的” 里面放置用户头像的需求。如下图: 思路先看设置 tabbarIt...

  • 自定义TabBar

    基本自带TabBar来实现自定义 在iOS原生的tabBar中,能够实现按钮的点击事件,能够实现视图控制器的切换等...

  • iOS_定制 Tabbar

    iOS 开发中,定制 tabbar 的需求比较常见。这里总结自定义的实现。分如下几步: 自定义 DockView ...

  • iOS-产品要的UIView

    1、Button上面图片,下面文字 2、tabbar中间的那个是整个图片,无需自定义,简单实现 效果图: 3、设置...

  • iOS自定义tabbar后popToRootViewContri

    iOS自定义tabbar后popToRootViewContriller和poptoviewcontroller时...

  • 碎片1 iOS总结代码知识点

    1.自定义tabbar--设置 TabBarItem 选中时的图片及文字颜色 实现效果:tabbarItem的未选...

  • 自定义TabBar(在tabBar中有一个弧形的凸起)

    1、自定义TabBar的效果图 2、对于tabBar的自定义实现步骤 1、在tabBar中只可以布局5个tabBa...

  • 自定义TabBar03

    之前曾整理过两篇自定义TabBar的文章:自定义TabBar01自定义TabBar02 这里先将以前的两种实现方式...

  • 开发常用第三方库

    自定义tabbar; 无限循环图片,文字轮播器; 自定义statusBar 自定义搜索界面 图片裁剪 启动广告 自...

  • 小程序 tabbar

    tabbar 实现方案 使用系统默认的 tabbar 使用系统自定义的方式 使用 weui 组件库 自定义 tab...

网友评论

    本文标题:iOS Tabbar 实现自定义图片 放置用户头像

    本文链接:https://www.haomeiwen.com/subject/adkrvqtx.html