iOS之设置用户头像的圆角

本文介绍如何使用UIImageView在iOS应用中设置用户头像,并实现头像的圆角效果,添加单击事件,以及从相册或相机选择图片的功能。

 

   1. 显示用户头像用UIImageView实现,添加默认图片后效果如下图所示,头像显示为矩形图片。

 

  代码实现:

//  ViewController.m
//  SetUserImage
//
//  Created by jerei on 15-4-26.
//  Copyright (c) 2015年 jerei. All rights reserved.
//

#import "ViewController.h"

#define kWidth self.view.bounds.size.width
#define kWH 100

@interface ViewController ()
{
    UIImageView *_userImage;
}

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
 
    [self addUserImageView];
}

#PRagma mark 添加显示用户头像的ImageView
-(void)addUserImageView
{
    _userImage = [[UIImageView alloc] initWithFrame:CGRectMake((kWidth-kWH)/2, 100, kWH, kWH)];
    _userImage.image = [UIImage imageNamed:@"img1.png"];
    [self.view addSubview:_userImage];
}
@end

  2. UIView里面有一个属性layer,CALayer类主要为内容展示和动画操作,在这里我们可以通过对layer的设置来得到圆角的头像。

 

   让我们一起在.m文件中添加一个设置圆角图片的方法吧!

  代码:

#pragma mark 设置显示用户头像的圆角ImageView
- (void)setUserImageView
{
    //圆角的半径
    _userImage.layer.cornerRadius = 50;
    //是否显示圆角以外的部分
    _userImage.layer.masksToBounds = YES;
    //边框宽度
    _userImage.layer.borderWidth = 5;
    //边框颜色
_userImage.layer.borderColor = [[UIColor colorWithRed:0.86 green:0.52 blue:0.73 alpha:1] CGColor];
}

  除了圆形,我们还可以将其设置为其他形状,如下图所示。假设显示的头像为正方形,也就是宽高相等,那么当layer.cornerRadius等于头像宽度一半时,正好为正圆形。

二、为用户头像添加单击事件

  UIImageView只是用来做图片展示的,因此默认不响应用户的点击事件,如果想让其和按钮一样响应点击事件,需要先开启用户交互,然后通过添加手势来实现点击效果。

  代码:

#pragma mark 为图片添加单击手势
- (void)addSingleTap
{
    _userImage.userInteractionEnabled = YES;
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapUserImage:)];
    //设置点击的手指根数
    [singleTap setNumberOfTouchesRequired:1];
    //设置单击次数
    [singleTap setNumberOfTapsRequired:1];
    //把单击手势加到用户头像图片上
    [_userImage addGestureRecognizer:singleTap];
}

#pragma mark 单击图片响应的方法
- (void)tapUserImage:(UITapGestureRecognizer*)tap
{
    NSLog(@"click userImage...");
}
三、选取图片

   用户头像图片的选取一般为两种,一是直接从手机相册中选择,二是打开照相机现拍一张。无论是哪种方式,都用到同一个类UIImagePickerController。

UIImagePickerController是图片选取控制器,用于从手机相册选取图片,选取图片后,将调用代理中方法,因此在文件的开头,要遵守该类的协议。

  代码1:

@interface ViewController ()<UIImagePickerControllerDelegate,UINavigationControllerDelegate>
{
    UIImageView *_userImage;
}
@end

  代码2:

#pragma mark 单击图片响应的方法
- (void)tapUserImage:(UITapGestureRecognizer*)tap
{
    NSLog(@"click userImage...");
    [self openThePhotoAlbum];
}

#pragma mark 打开系统相册或照相机
- (void)openThePhotoAlbum
{
    //创建图片选取器对象
    UIImagePickerController * pickerViwController = [[UIImagePickerController alloc] init];
    /*
     图片来源
     UIImagePickerControllerSourceTypePhotoLibrary:表示显示所有的照片
     UIImagePickerControllerSourceTypeCamera:表示从摄像头选取照片
     UIImagePickerControllerSourceTypeSavedPhotosAlbum:表示仅仅从相册中选取照片。
     */
    pickerViwController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    
    //允许用户编辑图片 (YES可以编辑,NO只能选择照片)
    //    pickerViwController.allowsEditing = YES;
    
    //设置代理
    pickerViwController.delegate = self;
    
    [self presentViewController:pickerViwController animated:YES completion:nil];
}

#pragma mark 相册协议中方法,选中某张图片后调用方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self dismissViewControllerAnimated:YES completion:nil];
    
    //头像设置为选中的图片
    [info objectForKey:UIImagePickerControllerOriginalImage];
    UIImage* image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    _userImage.image = image;
}

 

转载于:https://www.cnblogs.com/LiLihongqiang/p/5605383.html

内容概要:本文围绕“源-荷-储”协同互动的主动配电网优化调度展开研究,基于IEEE33节点系统,采用Matlab进行代码实现,重考虑“源-荷-储”协同互动的主动配电网优化调度研究【IEEE33节点】(Matlab代码实现)点探讨在多类型电源(如风、光等可再生能源)、负荷需求及储能设备协调运行下的优化调度策略。研究综合考虑系统运行成本、网损、峰谷差惩罚、上级电网交互功率等因素,构建多目标优化模型,并可能结合智能优化算法(如粒子群、遗传算法等)求解,旨在提升配电网运行的经济性、稳定性和可再生能源消纳能力。文中还提到了丰富的配套资源,涵盖电力系统、机器学习、路径规划等多个方向的Matlab/Simulink仿真案例。;适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab编程,从事新能源、智能电网、优化调度等领域研究的研究生、科研人员及工程技术人员。;使用场景及目标:① 学习和掌握主动配电网多目标优化调度的建模方法;② 理解“源-荷-储”协同互动机制及其在IEEE33节点系统上的实现;③ 借鉴和复现基于Matlab的优化算法代码,应用于自己的科研项目。;阅读建议:建议读者结合文中提供的网盘资源,下载完整的代码和文档进行实践操作,通过修改参数和模型来加深理解。同时,可参考文档中列举的大量相关研究案例,拓研究思路和技术视野。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值