首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

IOS:创建一个带圆角的UIImage或UIImageView

在iOS开发中,创建一个带圆角的UIImage或UIImageView可以通过以下步骤实现:

  1. 首先,创建一个UIImage或UIImageView,并设置其图片内容。
  2. 使用UIBezierPath创建一个圆角矩形,并将其添加到图片的剪辑路径中。
  3. 使用UIGraphicsBeginImageContextWithOptions函数创建一个新的图形上下文,并将其设置为当前上下文。
  4. 将图片绘制到新的图形上下文中,并应用剪辑路径。
  5. 使用UIGraphicsGetImageFromCurrentImageContext函数获取新的图片,并使用UIGraphicsEndImageContext函数结束当前的图形上下文。
  6. 将新的图片设置为UIImageView的image属性。

以下是一个示例代码:

代码语言:swift
复制
func createRoundedImage(image: UIImage, cornerRadius: CGFloat) -> UIImage? {
    let size = image.size
    let rect = CGRect(origin: .zero, size: size)
    UIGraphicsBeginImageContextWithOptions(size, false, 0)
    let path = UIBezierPath(roundedRect: rect, cornerRadius: cornerRadius)
    path.addClip()
    image.draw(in: rect)
    let newImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return newImage
}

let image = UIImage(named: "example")
let cornerRadius: CGFloat = 20
let roundedImage = createRoundedImage(image: image!, cornerRadius: cornerRadius)
let imageView = UIImageView(image: roundedImage)

在上述示例代码中,我们首先定义了一个名为createRoundedImage的函数,该函数接受一个UIImage对象和一个cornerRadius参数,并返回一个带圆角的UIImage对象。在函数中,我们使用UIBezierPath创建了一个圆角矩形,并将其添加到图片的剪辑路径中。然后,我们使用UIGraphicsBeginImageContextWithOptions函数创建了一个新的图形上下文,并将其设置为当前上下文。接下来,我们将图片绘制到新的图形上下文中,并应用剪辑路径。最后,我们使用UIGraphicsGetImageFromCurrentImageContext函数获取新的图片,并使用UIGraphicsEndImageContext函数结束当前的图形上下文。

在主函数中,我们首先加载了一个名为example的图片,并设置了圆角半径为20。然后,我们调用createRoundedImage函数创建了一个带圆角的UIImage对象,并将其设置为UIImageView的image属性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

面试题型—iOS离屏渲染探索

一、iOS渲染流程梳理 iOS开发中,将图像显示到屏幕上有两种方式: 1、正常渲染流程 2、离屏渲染流程 二、离屏渲染性能问题 2.1 离屏渲染存在性能问题 1、相比于正常渲染流程,离屏渲染需要额外创建一个缓冲区...2、存在一些特殊效果,正常流程无法完成,必须使用离屏渲染,比如圆角、阴影和遮罩、高斯模糊、半透明图层混合等正常渲染流程采用油画算法由远及近渲染图层,当一个图层显示到屏幕上后,帧缓冲区会立即删除这一图层数据...也没有效果 四、iOS设置圆角触发离屏渲染原因 我们以UIButton和 UIImageView为例: //1.按钮存在背景图片 UIButton *btn1 = [UIButton buttonWithType...由此可见,设置圆角触发离屏渲染条件是 contents 有子视图,并设置了 masksToBounds = YES 。这是一个关系,两者必须都满足。...总结 1、iOS图形渲染流程分为 正常渲染流程 和 离屏渲染流程 ; 2、离屏渲染是在帧缓冲区之外开辟了一个临时缓冲区,用于保存一些暂时没有用到数据,之后会从离屏缓冲区取出,渲染后再放入帧缓冲区;

94160

UIImageView圆角,教你远离cornerRadius

10.f; 由于设置masksToBounds 会导致离屏渲染(离屏渲染:GPU在当前屏幕缓冲区外新开辟一个渲染缓冲区进行工作),这会给我们带来额外性能损耗,如果这样圆角操作达到一定数量,会触发缓冲区频繁合并和上下文频繁切换...当然这些效果不会直接显示在屏幕上,可以使用InstrumentsCoreAnimation检测,当然你也可以自己写一个检测帧频方法。 那如何高效UIImageView创建圆角?...修改image为圆角图片 图片进行了切角处理后,将得到圆角UIImage通过setImage传给了UIImageView。操作没有触发GPU离屏渲染,过程在CPU内完成。...延伸:如何高效为UIView创建圆角? 做法原理是手动画出圆角image,在UIView上增加一层UIImageView,将image赋值给UIImageView。...当然,简单做法是设计美工自己做一张带有圆角效果图片,根据大小拉伸。这样一个好处是以防美工随意更改圆角角度?

2.1K40

iOS设置圆角及圆形图片

先来看看效果图: 如效果图所示,我们制作了一个圆形头像,一个完全半圆圆角按钮,一个圆角按钮,以及一个边框且边框为圆角label。...大概思路如下: View都有一个layer属性,我们正是通过layer一些设置来达到圆角目的,因此诸如UIImageView、UIButton、UILabel等view都可以设置相应圆角。...对于圆形头像,要制作正圆,我们需要首先设置UIImageView高宽一致,然后我们设置其圆角角度为高度除以2即可,相当于90度,代码如下: // 圆形头像 UIImageView *avatarImgView...= [UIImage imageNamed:@"icon"]; // 图片做圆形,圆角角度为高度一半,而高宽一致,因此可以形成正圆 avatarImgView.layer.masksToBounds.../ 2; [self.view addSubview:btnOne]; 对于第三个小圆角按钮,我们直接设置圆角圆度为一个数即可,数大小决定了按钮圆角样式,这里我们设为4: // 小圆角按钮

1.7K20

iOS面试题-UI篇

loadView用来自定义view,只要实现了这个方法,其他通过xibstoryboard创建view都不会被加载 看懂控制器view创建这个图就行 [image] IBOutlet连出来视图属性为什么可以被设置成...如果没有找到指定标识cell,那么会通过initWithStyle:reuseIdentifier:创建一个cell 当cell离开界面就会被放到缓存池中,以供下次复用 如何高性能UIImageView...加个圆角?...添加了圆角,其实也是通过绘图技术来实现 UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100...如何进行iOS6、7适配 通过判断版本来控制,来执行响应代码 功能适配:保证同一个功能在6、7上都能用 UI适配:保证各自显示风格 // iOS版本为7.0以上(包含7.0) #define iOS7

1.9K21

Quartz2D复习(四) --- 图层CALayer和动画CAAnimation

1、CALayer 1)、在ios中,能看得见摸得着东西基本上都是UIView, 比如按钮、文本标签、文本输入框、图标等,这些都是UIView 2)、UIView之所以能显示在屏幕上,完全是因为它内部一个图层...3)、在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIViewlayer属性可以访问这个层:@property (nonatomic,readonly,...QuartzCore框架和CoreGraphics框架是可以跨平台使用,在ios和Mac OSX上能使用;   但是UIKit只能在ios中使用;为了保证可移植性,QuartzCore不能使用UIImage...和时分秒针 28 - (void)addImgAndLayer{ 29 //1、添加UIImageView 30 UIImage *img = [UIImage imageNamed...;小于50为一个圆角方形, 大于50为变型图形 31 32 view.layer.borderWidth = 5; 33 view.layer.borderColor = [UIColor

1.4K30

UITextField设置leftView、圆角以及文字距离

今天在工作中,搭建一个登录界面,因为涉及到用户名和密码输入,所以在iOS中我们免不了要用到UITextField这个常见输入控件。...UITextField效果 这里我们能看到这个UITextField基本要求有如下几个: 输入框内有提示图片 之后输入文字与输入框内图片有间距 输入框有圆角 大致分为上面的三个特殊要求,那么我们一个一个来分析...UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"github.jpg"]];...UIImageView,之后把这个imageView设置成textFieldleftview,之后设置leftview样式,就可以很简单定义一个leftview。...= YES; 第二种是设置UITextfield样式,也能实现自带圆角,但是这个圆角值是固定 textField.borderStyle = UITextBorderStyleRoundedRect

2.1K10

iOS性能优化-iOS 页面优化

因为自动布局原理是:通过创建一个与view绑定对象engine,使用engine记录下来相关约束信息,在布局计算时候,带入相关参数计算出来frame. 如果能去掉这一步,肯定是能节省性能。...异步图片解码 系统会默认在UIImage加载到UIImageView或者CALayercontent上时候,在主线程进行解码。...这个解码操作是耗时,如果不处理可能会造成卡顿问题,因此需要放到子线程里去异步执行。 我们使用三方框架都有此类处理。 比如SDWebImage是创建一个串行队列,异步执行解码操作。...对于使用频繁图片,可以使用[UIImage imageWithNamed:@""]方式创建,利用系统级别的缓存来提高效率,减少内存。...对于UIImageView圆角方案 最开始时候,我想法和网上方案一样,就是: 利用子线程将图片进行切角处理,同时缓存下来这张图片,然后异步到主线程使用图片。

2.5K21

Quartz2D复习(一)--- 基础知识 绘制线段圆弧 图片水印 截图

1、Quartz 2D是一个二维绘图引擎,同时支持ios和Mac系统; Quart2DAPI是纯C语言,API来自于Core  Graphics框架: 2、Quartz 2D可以绘制图形(线段/三角形...其实,ios中大部分控件内容都是通过Quart2D画出来 4、图形上下文(GraphicsContext): 是一个CGContextRef类型数据      图形上下文作用:1)保存绘制信息、...) drawRect: (CGRect)rect;  方法,然后在这个方法中,可以去跟当前view相关联图形上下文; 绘制相应图形内容(绘制时产生线条称为路径,路径由一个多个线段曲线段组成)...在 iOS 中,总是使用横排文本,0 以外值都未定义。...,并保存下来,关闭图片上下文,也可以把图片保存在本地 35 - (void)testImageContext{ 36 //1、创建图片 37 UIImage *img = [UIImage

2.6K10

图层树和寄宿图 -- iOS Core Animation 系列一

视图在层级关系中可以互相嵌套,一个视图可以管理它所有子视图位置。 在iOS中,所有的视图都是从UIView这个基类派生出来。...1.2 CALayer CALayer平时大家也很常见,比如简单设置个圆角,或者边线等操作都会用到。...1.3 平行层级关系 每个UIView都对应着一个CALayer,视图职责是创建并管理这个图层,以确保党子视图在层级关系中添加或者被移除时候,他们对应图层也同样在对应层级关系树中有相同操作...但是在 iOS上,如果将 UIImage 值赋给它,只能得到一个空白图层。 事实上,真正赋值类型应该是CGImageRef,这是一个指向CGImage结构指针。...因为UIView在创建时,会自动吧图层代理设置为自己,然后提供了一个-displayLayer:方法实现。 ---- - 系列一完 -

1.2K20

Core Animation实战四(视觉效果)

这里有一些UIView没有暴露出来CALayer功能: 阴影,圆角颜色边框 3D变换 非矩形范围 透明遮罩 多级非线性动画 这篇主要说阴影圆角边框,先看一下Demo效果: ?...它是一个CGSize值,宽度控制这阴影横向位移,高度控制着纵向位移。...self.shadowView.layer.shadowOffset = CGSizeMake(1, 1); //shadowRadius属性控制着阴影模糊度,当它值是0时候,阴影就和视图一样有一个非常确定边界线...当值越来越大时候,边界线看上去就会越来越模糊和自然。苹果自家应用设计更偏向于自然阴影,所以一个非零值再合适不过了。...双线性滤波算法通过对多个像素取样最终生成新值,得到一个平滑表现不错拉伸。但是当放大倍数比较大时候图片就模糊不清了。

51820

IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )

, 只在水平垂直方向某一个方向是完整, 另一个方向截取; -- Center : 不缩放图片, 显示图片中间区域; -- Top : 不缩放图片, 显示图片顶部区域; -- Bottom : 不缩放图片...]; -- 根据一个图片创建 CGImageRef :  //创建图片 CGImageRef newImageRef = CGImageCreateWithImageInRect...定制进度条示例 (1) 相关 API 简介  相关 API 简介 :  -- 创建可拉伸 UIImageUIImage * trackImage = [[UIImage imageNamed...获取账号输入文本框 UITextField * userNameField = [alertView textFieldAtIndex:0]; -- 生成警告提示框 :  //创建一个...didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (IBAction)click:(id)sender { //创建一个

2.4K40

分分钟解决iOS开发中App启动广告功能

allluckly.cn 前不久有朋友需要一个启动广告功能,我说网上有挺多,他说,看不是很理想。...想让我写一个,于是乎,抽空写了一个,代码通俗易懂,简单封装了一下,各种事件用block回调,有俩种样式广告,一种是全屏广告,另一种是下面露logo,类似网页新闻启动广告。...,在此,我只传递了三个必要参数,其他参数都用@property属性来调配,达到自己想要效果,再有就是一个block回调函数,主要处理各种事件。...UI部分在此不做过多阐述,里边主要运用了一个渐变动画,利用CABasicAnimation中opacity,有兴趣朋友可以看看源码, 再有就是一个图片重构方法,防止图片变形。...:(NSDictionary *)launchOptions { /* FullScreenAdType 全屏广告 * LogoAdType logo广告类似网易广告,值得注意是启动图片必须

3.4K41

iOS界面黑白实现

背景iOS APP界面黑白效果实现调研整理,总的来说网上目前有下面几种方法:针对H5网页:注入js代码针对APP原生界面:针对图片和颜色单独设置hook UIImageViewsetImage方法,添加...UIImageCategory,生成灰色图片hook UIColorcolorWithRed:green:blue:alpha:方法针对界面整体处理创建一个灰色view,设置不响应事件,然后添加在window...针对图片处理:大部分图片显示都是最后都是调用UIImageViewsetImage方法,所以hook这个方法,在显示前生成灰色图片,然后在赋值,代码如下:hook UIImageViewsetImage...CGImage转成面向对象UIImage(转成iOS程序认识图片类型) UIImage *dstImage = [UIImage imageWithCGImage:grayImageRef];...所以建议创建一个灰色view,设置不响应事件,然后添加在要置灰页面或者全局window最上层即可。

1.4K40

常用开发技巧系列(三)

热更新衍生出来问题:   前两天都在说iOS热更新问题,结果今天就撞枪口上了,真的!审核被拒了,当然这并不是在我自己项目使用了什么RN,或者JSPath等问题,是个推!!...警告继续:     在Xcode中,警告这个东西还是很烦人!下面简单说两个消除警告技巧!     第一:加入你使用SVN或者Git在管理代码,这当中你要是删除了一些你创建了又觉得没用文件。...)resizingMode NS_AVAILABLE_IOS(6_0); // the interior is resized according to the resizingMode */ 我们一个一个说说...UIImage * image1 = [UIImage imageNamed:@"image"]; UIImageView * imageView1 = [[UIImageView alloc]...最后一个方法需要注意就是后面的枚举,你可以把上面的方法用这个代替了,看看效果,体会一下这个复制和渐变区别!

70350

iOS学习——核心动画之Layer基础

].CGColor; _RedView.layer.borderWidth = 2; 2.3.设置圆角 //图层圆角半径,圆角半径为宽度一半, 就是一个圆 _RedView.layer.cornerRadius...= 50; 3、如何操作layer改变UIImageView外观? ...UIImageView中是UIView主layer上添加了一个次layer(用来绘制contents),我们设置边框是主layer,但是次layer在上变,不会有任何影响,所以当我们调用切割语句时候...在明白要怎么选择之前,我们先了解一下UIView和layer不同点: 在iOS中看见,摸得着都是UIView,例如一个按钮,UITextField,UILable等等,都是UIView UIView...之所以能够显示在屏幕上,是试音UIView中有一个图层 在创建UIView时候,系统会自动创建一个CALayer在其中,用于显示东西,可以通过view.layer来去获取图层属性 当UIView要去显示时候

1.5K61

iOS8新特性:简洁易用毛玻璃效果 原

IOS8之后,苹果官方新出了一个类UIVisualEffectView,通过这个类,实现毛玻璃效果变得轻而易举,而且效率非常之高,下面,我们来介绍下这个类简单用法。...对象一个frame,然后直接加到我们想要虚化背景上,总体代码如下:   UIImageView * view = [[UIImageView alloc]initWithFrame:CGRectMake...四、在虚化背景上创建颜色绚丽标签 我们先来看一个效果,我们在刚才创建虚化背景上添加一个标签,代码如下: UILabel * view2 = [[UILabel alloc]init];     ...五、一个小控件 通过上面的介绍,我们可以发现,在IOS8中创建一个毛玻璃效果是如此容易,apple官方提供类也是如此强大,我们很轻松就可以实现实时变化虚化程度动画效果,这在以前是非常麻烦和低效...但是apple还有一个忠告:莫要泛滥使用虚化,导致很差用户体验! 最后,和大家分享一个前两天写小控件,实现效果是仿IOS8中在桌面下拉会是背景渐变虚化,从顶部会滑出搜索框。

1.2K60

《Motion Design for iOS》(三十六)

frameY坐标(垂直位置)都有一个小方程式。...持续时间是动画完成需要时间,而阻尼是iOS 7在UIView动画方法中提供一个弹簧属性,用来控制弹簧弹力。...这种类型弹性动画带来了一些焦虑。这是一个关于仅仅使用一个弹簧动画并不能提升你app整体用户体验很好例子。每种类型动画都给你用户带来了一些感受,而这个带来了错误地感受。...你可以发现当你使用iOS 7提供弹簧动画方法时,它直接提供了一些值来获取你想要感觉。...iOS 7基于block动画中damping值实际上是一个解释值,这意味着苹果无论获取到你输入什么值,都会做一些复杂计算来操作这个值并将其放入弹簧动作方程式中。

49120
领券