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

如何在UIImageView上画圆而不在objective-c中添加层?

在UIImageView上画圆而不在Objective-C中添加层,可以通过以下步骤实现:

  1. 创建一个自定义的UIImageView子类,命名为CircleImageView。
  2. 在CircleImageView类中重写drawRect方法,该方法用于绘制视图的内容。
  3. 在drawRect方法中使用UIKit提供的绘图函数或方法来绘制一个圆形。
  4. 在CircleImageView类中添加一个属性,用于设置圆形的边框颜色和宽度。
  5. 在需要使用圆形ImageView的地方,使用CircleImageView类来替代普通的UIImageView。

下面是一个示例代码:

代码语言:objective-c
复制
// CircleImageView.h

#import <UIKit/UIKit.h>

@interface CircleImageView : UIImageView

@property (nonatomic, strong) UIColor *borderColor;
@property (nonatomic, assign) CGFloat borderWidth;

@end

// CircleImageView.m

#import "CircleImageView.h"

@implementation CircleImageView

- (void)drawRect:(CGRect)rect {
    [super drawRect:rect];
    
    // 获取当前视图的上下文
    CGContextRef context = UIGraphicsGetCurrentContext();
    
    // 设置边框颜色
    CGContextSetStrokeColorWithColor(context, self.borderColor.CGColor);
    
    // 设置边框宽度
    CGContextSetLineWidth(context, self.borderWidth);
    
    // 计算圆形的半径和中心点
    CGFloat radius = MIN(rect.size.width, rect.size.height) / 2;
    CGPoint center = CGPointMake(rect.size.width / 2, rect.size.height / 2);
    
    // 绘制圆形路径
    CGContextAddArc(context, center.x, center.y, radius, 0, M_PI * 2, 0);
    
    // 绘制边框
    CGContextDrawPath(context, kCGPathStroke);
}

@end

使用CircleImageView类来替代普通的UIImageView,即可在UIImageView上绘制一个圆形边框。你可以通过设置CircleImageView的borderColor和borderWidth属性来自定义边框的颜色和宽度。

这种方法可以用于任何需要在UIImageView上绘制圆形边框的场景,比如用户头像、标签等。腾讯云相关产品中,可以使用腾讯云对象存储(COS)来存储和管理用户头像等文件资源。具体产品介绍和使用方法,请参考腾讯云对象存储(COS)的官方文档:腾讯云对象存储(COS)

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

相关·内容

【IOS】IOS开发问题解决方法索引(三)

在 IOS 我们没办法将某个 Objective-C 对象变成 JS 对象,所以,在网页触发了某些事件,想要通知 Objective-C 这一端,往往会选择使用像「zonble://」这类 Customized...ChromeOS 完全以 WebKit 製作使用者介面,不过我们没办法在 ChomeOS 写我们在这边所讨论的桌面或行动应用程序,所以不在我们讨论之列。...与js交互 如何在Objective-C的类里面声明私有方法. http://hi.baidu.com/shiqyn/item/52887ff19d3df61aa729885f Objective-C...p=128 17 Xcode工程添加js文件,需要添加到copy Bundle Resources 18 OC^符号使用 用^符号支持将一个代码段以参数形式添加到方法; 19...究其原因:是因为UIImageView的AnimationImage属性是一个NSArray类型,不是NSMutableArray,故一旦完成初始化,其数组大小就已经确定了,数组长度不再可变。

90220

Objective-C实现链式编程语法(DSL)

- Carlson, University of Wisconsin 前言 熟悉Objective-C这一门编程语言的人都知道,Objective-C中方法的调用都是通过括号[]实现的。...比如[self.view addSubview:xxxView];如果想要在一个对象连续调用多个方法,就要使用多组括号嵌套(当然要保证每个方法都能把该对象作为返回值return)。...h,并修改block的返回值类型为UIImageView。...(UIColor *))DSL_TintColor; @end UIImageView(DSL).m实现文件不需要再实现DSL_frame和DSL_backgroundColor这两个方法,因为已经在...文/VV木公子(简书作者) PS:非特别说明,所有文章均为原创作品,著作权归作者所有,转载请联系作者获得授权,并注明出处。

8.1K20
  • 《Motion Design for iOS》(三十一)

    这个视图被添加为类的@property了,这样我们就可以在之后的代码引用它。这里显示了如何声明一个@porperty。...@property (assign) UIImageView *appBackground; 这个@property既可以定义在类的.h文件的@interface,也可以定义在.m实现文件的@interface...在苹果的开发者网站的Objective-C指南中可以阅读更多关于程序的属性的内容。 最后,我们将UIImageView作为主屏幕的一个子视图添加进去。...现在让我们添加地图,它会是透明的,并且会伴随着变化开始。我们会在主应用图片后立即添加它,因为我们想要最后添加图标按钮,这样它就会使z轴最高的,也就是在其他视图的顶部。...这里就是Swift下的上面Objective-C的代码。 self.mapView = UIImageView(frame: CGRectMake(0, 62, self.window!.

    67130

    ReactJS到React-Native,架构原理概述

    对于 React Native ,React Native 调用Objective-C 的API 去渲染iOS 组件,调用Java API 去渲染Android 组件,不是渲染到浏览器DOM 。...由于React Native 不在UI 主线程运行,它可以在不影响用户体验的前提下执行这些异步调用。...将此 JSON 文件映射渲染到原生 App 的页面元素,最终实现了在项目中只需要控制 state 以及 props 的变更来引起 iOS 与 Android 平台的 UI 变更。...为了给React-Native组件加上样式,你需要在JavaScript添加样式表。React 和宿主平台之间的桥接包含了一个缩减版CSS 子集的实现。...会定时、主动的调用JS放到MessageQueue 的方法,实际(由于卡顿或某些特殊原因),JavaScript 也可以主动调用 Objective-C 的方法,目前,React Native 的逻辑是

    5.3K10

    ReactJS到React-Native,架构原理概述

    对于 React Native ,React Native 调用Objective-C 的API 去渲染iOS 组件,调用Java API 去渲染Android 组件,不是渲染到浏览器DOM 。...由于React Native 不在UI 主线程运行,它可以在不影响用户体验的前提下执行这些异步调用。...将此 JSON 文件映射渲染到原生 App 的页面元素,最终实现了在项目中只需要控制 state 以及 props 的变更来引起 iOS 与 Android 平台的 UI 变更。...为了给React-Native组件加上样式,你需要在JavaScript添加样式表。React 和宿主平台之间的桥接包含了一个缩减版CSS 子集的实现。...会定时、主动的调用JS放到MessageQueue 的方法,实际(由于卡顿或某些特殊原因),JavaScript 也可以主动调用 Objective-C 的方法,目前,React Native 的逻辑是

    5.9K10

    面向对象设计的设计模式(十二):享元模式

    内部状态是存储在享元对象内部并且不会随环境改变改变的状态,因此内部状态可以共享。 外部状态是随环境改变改变的、不可以共享的状态。...抽象享元类就是Objective-C的原生UIImageView,它可以显示图片 具体享元类可以自己定义一个类继承于UIImageView,因为后续我们可以直接添加更多其他的属性。...因为在Objective-C里面,UIImage是FlowerImageView所继承的UIImageView的一个属性,所以在这里FlowerImageView就直接包含了UIImage。...抽象享元类是UIImageView,它的一个内部对象是UIImage(这两个都是Objective-C原生的关于图片的类)。...Objective-C & Java的实践 iOS SDK的UITableViewCell的复用池就是使用享元模式的一个例子。

    63920

    iOS 面试策略之经验之谈-架构的选择

    试想如果所有代码都集中在一个 UIViewController ,App 理论确实能够运行,然而当调试时面对拥有庞大代码的单个文件,我们需要花大量的时间去找到发生问题的源头。...Model 过于简单。相比于 ViewController 的庞大代码,Model 只是定义几个属性。在 Objective-C 的 “.m” 实现文件,更是几乎看不到代码。...不同点在于,MVC View 和 Controller 耦合在 ViewController 类里; MVP 的 View 是单独的 UIView/UIViewController,Presenter... MVP 的 Presenter 则负责业务逻辑,它是 View 和 Model 的桥接。它会根据 View 的交互去修改 Model,或根据 Model 的变化去修改 View。...逻辑讲,中间层的作用就是连接视图层和模型。它处理交互、接受通知、完成数据更新。

    1K30

    唐巧的iOS技术博客选摘

    UIImageView-BetterFace-Swift:UIImageView-BetterFace-Swift是一个根据目标图象中头像的位置进行智能图片裁剪的开源库,该地址是其更新的Swift版本。...Crashlytics-FPCustomHandler:这是一个为 Crashlytics 写的 category, 可以方便添加自己的崩溃处理函数。...《为什么唱吧iOS 6.0选择了Mantle》:唱吧6.0一个很重大的修改就是基于Mantle重建(新建)了Model。文章分享了使用Mantle的决策及执行过程。...《刨根问底Objective-C Runtime(1)- Self & Super》:本文通过分析clang重写的Objective-C源码,从而解释Objective-C的self和super在编译器层面分别是如何处理的...Duet Display 基于此实现了将 Mac 界面呈现到 iOS 设备。 KSHObjcUML:KSHObjcUML 是一个 Objective-C 类引用关系图的 Xcode 插件。

    3.3K60

    译文: 低调奢华有内涵的「Runtime」

    当然,我是翻译了这篇文章,但是对Runtime的理解,还是很基础——主要是还没有太多实践,真实开发几乎也用不到,一文章所说:「如果可以,避免使用Objective-C的Runtime……」。...这两种语言可能根本不一样,但实际可以很好地互补。 虽然Swift是用来取代Objective-C的,但苹果依然继续维护Ovjective-C。...主要改进了:可以更好地和Swift编译,并添加了很多新特性,nullability、generics。没有改变OC应用的行为,OC对于开发者来说仍然是一种可读性好的开发语言。...假设你要创建一个UIImageView的category,用于下载图片。...但在等真正导致问题的修复发布前,Runtime确实帮忙防止了成千上万这种崩溃(译者:通过class_addMethod()函数,可以在+ (BOOL)resolveInstanceMethod:(SEL)sel方法动态地添加方法实现

    96840

    iOS 动画笔记 (二)

    一:说说这两个三方库,Canvas 和 POP          这里有详细的说明了它们俩的优缺点,我们就不在粘贴复制浪费时间了,链接在下面!...Canvas -- iOS 动画库 :安装就在git看就行,点前面的就能到git链接了,下图是安装说明: 739006-20160620165240459-805778927.png 顺便提提这个...The API allows quick integration with existing Objective-C codebases and enables the animation of any...提供基础的静态动画以及支持弹簧和衰减动画,用来构建高可用性的真实、物理特性的交互体验,使用OC作为基础,可用户扩展到任何的OC的Object的属性,是一个非常易于测试的框架,并且在Facebook自家的Paper应用...[self.view addSubview:animionview]; // Add your subviews into animationView // 把自己的view添加到动画中去

    84760

    想要漂亮的蒙版指引吗?跟着我手把手的教你写出来

    最近版本的一个需求是给首页添加新人蒙版,类似的效果图如下图所示。 首页第一蒙版的效果图 ? 首页蒙 首页第二的蒙版效果图 ? 首页蒙2 个人中心的蒙版效果图 ?...大体目前就有这么多,恰巧新用户下载就会弹出注册通知弹出框, 新人大礼包弹出框, 新人蒙版指引弹出框。...756EDF51-D681-4F3D-92BF-840EEDFA101B 这究竟是怎么个情况,最后在群得到的答复是我添加在 keyWindow是当时弹出来的 Alert的 注册通知的弹出框。..._maskItems = [dataSource maskViewItems:self]; } [self makeMask]; } 我们的初始化方法,用到了一个代理源用于获取需要添加的蒙对象...- (UIImageView *)gb_tabbarItemTitle:(NSString *)title { __block UIImageView *imageView; [[self

    1.4K20

    《Motion Design for iOS》(三十二)

    现在让我们添加我们的图标按钮。...有点类似于CSS对按钮进行重置。 接下来我设置按钮的图片为我app包的“map-icon”图片。参数UIControlStateNormal意味着这个图标会在常规、默认状态下为显示按钮的图片。...self参数值意味着我想要这个按钮调用其被点击时所在的类,@selector(didTapMapIcon:)是我想要调用的Objective-C方法。...*appBackground; @property (strong) UIImageView *mapView; @end 现在,回到我们的按钮点击方法,我们需要在这里添加一些逻辑,来检查地图是显示还是不显示...这实际是两个选项通过二进制 | 操作组合在一起的:UIViewAnimationOptionCurveEaseInOut用来定义动画的淡入淡出,UIViewAnimationOptionBeginFromCurrentState

    46310

    iOS面试题-UI篇

    UIView本身,更像是一个CALayer的管理器,访问它的跟绘图和坐标有关的属性,frame,bounds等,实际内部都是访问它所在CALayer的相关属性 UIView有个layer属性,可以返回它的主...例如下面的代码会在目标View敷上一黑色的透明薄膜。...这部分有深度了,大致了解一下吧,UIView的layer树形在系统内部被系统维护着三份copy 逻辑树,就是代码里可以操纵的,例如更改layer的属性等等就在这一份 动画树,这是一个中间层,系统正是在这一更改属性...添加了的圆角,其实也是通过绘图技术来实现的 UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100..., 再使用 CGContextRef 进行绘制 描述下SDWebImage里面给UIImageView加载图片的逻辑 SDWebImage UIImageView 提供了一个分类UIImageView

    2K21

    iOS 应用瘦身方法思路整理

    换句话说,iPhone 的 rom 存在 4K 对齐的情况,一张 498B 大小的图片在应用包也要占据 4KB 大小。因此项目中每添加一张图片就至少增大了 4KB。...首先创建空应用,其大小在 7P 为 213KB,引入一张 498B 的图片前后对比如下: ? 一张498B的图片 ? 占据 4KB 磁盘空间 ? 未添加资源的应用 ?...很多应用都使用过这种方案,淘宝、爱奇艺等知名应用,都采用过这种方式。 使用字体文件的好处是显而易见的,如果 APP 某个图片比较大,那么为了保证清晰度,UI 可能会提供比较大的图标。...为了验证这个问题,首先定义一个 UIImageView 的子类,并将 XIB UIImageView 指定为这个子类。...为了将图片名称传给 UIImageView,需要给 aDecoder 添加一个 block 的关联引用。 ?

    1K10

    iOS工程师必看的 20 道 面试题

    无需手动设置,该对象会自行在内存销毁。 assign主要用于修饰基本数据类型,NSInteger和CGFloat,这些数值主要存在于栈。...的内存系统会自动处理,不会造成野指针。 copy与strong类似。不同之处是strong的复制是多个指针指向同一个地址,copy的复制每次会在内存拷贝一份对象,指针指向不同地址。...内存,引用类型诸如类是在堆(heap)值类型诸如结构体实在栈(stack)上进行存储和操作。...在Swift和Objective-C的混编项目中,如何在Swift文件调用Objective-C文件已经定义的方法?如何在Objective-C文件调用Swift文件定义的方法?...具体过程是在Objective-C对象调用方法时,self.tableview reload,发生了两件事。

    3.8K40

    窥探Swift编程之别样的HelloWorld

    从今天就开始陆陆续续的发布一些有关Swift语言的东西,虽然目前在公司项目开发Objective-C还是iOS开发的主力军,但是在不久的将来Swift将会成为iOS开发的新生宠儿。...所以在在Xcode6.0+版本的Playground玩一玩Swift还是很有必要的。在接下来发表的博客主要是总结一下自己在翻译《Swift编程入门经典》(清华大学出版社出版)这本书所学到的东西。...3.键入ProductName :SwiftDemo,Organiztion Name, Organization identifier一般为你所在公司域名倒序com.cnblogs.lizelu,...下面就是我们创建好的工程,Swift语言文件的后缀名是swift,它不在Objective-C的又.h和.m文件 ? 二.如何在上面的创建的工程实现HelloWorld。   ...1.当然了,有Storyboard干嘛不用呢对吧,在ViewController添加一个Label: HelloWorld 并设置样式,然后在label添加一个Button,并添加相应的约束,如下所示

    1.8K80

    TableView优化之快速滑动下的忽略加载

    圆角是TableViewCell的帧率杀手大家都知道吧,所以人家根本就没有画圆角。他是怎么做的呢?覆盖了与背景色同色的圆角图片,简单粗暴,果然是个心机boy。...不想看的话我给你总结一下,就两点: 别冤枉cornerRadius,问题不在它。而在于maskToBounds。普通的UIView绘制圆角时并不需要maskToBounds属性。...既然有普通就有特殊:UIImageView和UILabel以及我还没有发现的=。=对于UIImage的处理建议先借助CoreGraphic处理图片吧,直接绘制一个带圆角的图片给ImageView吧。...= 说以下主体思路,VVebo的作者认为,当用户快速滑动的时候,事实他对滑动过程的内容是不关心的,他只关心滚动结束处的内容,那么用户不关心的内容她就选择了不加载。...首先他cell调用了clear方法,这是VVeboTableViewCell作者自己实现的方法,用于清除cell上面展示的内容,这样可以避免因cell重用导致没有绘制的cell会显示之前的内容的问题

    1.7K33
    领券