一、问题:

  如何在Autolayout模式中设置一个UIView的layer.cornerRadius?

二、解决:

  UiView的layer目前还不支持Autolayout设置约束,因此如果想设置一个layer.cornerRadius的大小,必须传递的是一个值。

  如果被设置的UIView尺寸会发生变化,也就是动态的大小,那么就需要在约束发生变化的时候,主动更新layer.cornerRadius对应的大小

  那么具体分两种情况来对待:

  第一种,UIView的尺寸不变化的时候:

  1)在Xcode中设置layer.cornerRadius

  

  2)使用代码

  注意代码的位置,需要在View初始化的时候,比如ViewDidload,initView的时候

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIImageView *imgView;

@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad]; self.view.backgroundColor = [UIColor yellowColor];
self.imgView.backgroundColor = [UIColor blueColor]; self.imgView.layer.cornerRadius = self.view.bounds.size.height/2;
self.imgView.layer.masksToBounds = YES; }
@end

  但是需要注意一种情况,如果这个View的尺寸未计算得到的时候,需要放在 viewDidLayoutSubviews (VC),和viewDidLayout中(View)

  第二种,UIView的尺寸变化的时候:

  这种时候因为UIView的尺寸发生变化,那么需要在尺寸信息生成之后,进行调整。

  如果是VC,那么在viewDidLayoutSubviews或者ViewDidAppear的回调中。

  如果是UIView,苹果建议将约束代码放在updateConstraints回调中,这样可以提升性能。

  

//重写updateViewConstraints方法,进行约束的更新
- (void)updateViewConstraints {
[self.growingButton mas_updateConstraints:^(MASConstraintMaker *make) {
make.center.mas_equalTo(self.view); // 初始宽、高为100,优先级最低
make.width.height.mas_equalTo(100 * self.scacle).priorityLow();
// 最大放大到整个view
make.width.height.lessThanOrEqualTo(self.view);
}];
[super updateViewConstraints];
} // 通知需要更新约束,但是不立即执行
[self setNeedsUpdateConstraints];
// 立即更新约束,以执行动态变换
// update constraints now so we can animate the change
[self updateConstraintsIfNeeded];
// 执行动画效果, 设置动画时间
[UIView animateWithDuration:0.2 animations:^{
[self layoutIfNeeded];
}];

  

  

Autolayout 下面的 Layer.cornerRadius的更多相关文章

  1. eclipse 下面的folder,source folder,package的区别与作用

    首先明确一点,folder,source folder,package都是文件夹,既然是文件夹,那么任何的文件都可以往这三种文件夹下面的放.1.他们的区别folder就是普通的文件夹,它和我们wind ...

  2. 根据div 标签 查看数组@class=modulwrap 下面的/table/tbody/tr/td

    <div class="modulwrap"> <div class="request_title"> <span class=& ...

  3. 实现一个在autolayout下有宽度约束后,自动确定高度的view

    我曾经遇到过一个问题:需要实现一个自定义的label(类似于UILabel),同时需要兼顾UILabel的大小自适应的特性.这个label通常宽度是固定的,通过autolayout指定其宽度约束,但不 ...

  4. jz2440: linux/arch/arm/下面的plat-和mach-

    jz2440: linux/arch/arm/下面的plat和mach plat-s3c24xxmach-s3c2440mach-s3c2410 ====================== 1. 三 ...

  5. syslog之三:建立Windows下面的syslog日志服务器

    目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...

  6. webkit下面的CSS设置滚动条

    webkit下面的CSS设置滚动条 1.主要有下面7个属性: ::-webkit-scrollbar 滚动条整体部分,可以设置宽度啥的 ::-webkit-scrollbar-button 滚动条两端 ...

  7. Lazarus下面的javascript绑定另外一个版本bug修正

    Lazarus下面的javascript绑定另外一个版本bug修正 从svn 检出的代码有几个问题 1.fpcjs.pas 单元开始有 {$IFDEF FPC} {$MODE delphi} {$EN ...

  8. 给虚拟机下面的ubuntu系统增加硬盘存储空间

    给虚拟机下面的ubuntu系统增加硬盘存储空间   由于ubuntu系统是安装在vsphere上面的,所以可能会和vmware上面的有一点区别,打开exsi系统的配置页面,如下图所示. 选择添加存储器 ...

  9. Java:concurrent包下面的Map接口框架图(ConcurrentMap接口、ConcurrentHashMap实现类)

    Java集合大致可分为Set.List和Map三种体系,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map则代表具有映射关系的集合.Java 5之后,增加了Queue体系集合, ...

  10. Java:concurrent包下面的Collection接口框架图( CopyOnWriteArraySet, CopyOnWriteArrayList,ConcurrentLinkedQueue,BlockingQueue)

    Java集合大致可分为Set.List和Map三种体系,其中Set代表无序.不可重复的集合:List代表有序.重复的集合:而Map则代表具有映射关系的集合.Java 5之后,增加了Queue体系集合, ...

随机推荐

  1. 用存储过程和 JAVA 写报表数据源有什么弊端?

    我们在报表开发中经常会使用存储过程准备数据,存储过程支持分步计算,可以实现非常复杂的计算逻辑,为报表开发带来便利.所以,报表开发中这样的存储过程并不少见: 3008 行,141KB 的存储过程,会给报 ...

  2. Python中两种网络编程方式:Socket和HTTP协议

    本文分享自华为云社区<Python网络编程实践从Socket到HTTP协议的探索与实现>,作者:柠檬味拥抱. 在当今互联网时代,网络编程是程序员不可或缺的一项技能.Python作为一种高级 ...

  3. 这些Git事故灾难, 你经历过几个?

    前言 关于Git, 相信大家最常用的就是pull和push. 但随着协作规模的提升, 遇到的问题也会越来越多. 本篇文章并不科普一些命令的详细用法, 更多的是分享在工作中遇到的Git场景问题以及踩过的 ...

  4. 【vue】纯前端图形验证码实现

    [vue]纯前端图形验证码实现 感觉人不能在SQL里面淹死,得看看别的东西了 因为是上班摸鱼偷摸搞的,所以人比较懒,很多东西也懒得修修改改,直接放在一个html文件下了 页面如下 js的生成图形逻辑是 ...

  5. iLogtail开源之路

    简介: 2022年6月底,阿里云iLogtail代码完整开源,正式发布了完整功能的iLogtail社区版.iLogtail作为阿里云SLS官方标配的采集器,多年以来一直稳定服务阿里集团.蚂蚁集团以及众 ...

  6. 璀璨智行:V2X车路协同智慧交通

    ​V2X车用无线通信技术是指车对外界的信息交换,作为未来智能交通运输系统的关键技术,璀璨智行潜心研究V2X技术,致力于V2X车路协同的落地,在智慧交通领域做出了卓越的贡献. 创业机会点 魏军博表示:& ...

  7. 阿里大数据云原生化实践,EMR Spark on ACK 产品介绍

    开源大数据社区 & 阿里云 EMR 系列直播 第六期   主题:EMR spark on ACK 产品演示及最佳实践   讲师:石磊,阿里云 EMR 团队技术专家 内容框架: 云原生化挑战及阿 ...

  8. 形式化验证工具TLA+:程序员视角的入门之道

    ​简介: 女娲是飞天分布式系统中提供分布式协同的基础服务,支撑着阿里云的计算.网络.存储等几乎所有云产品.在女娲分布式协同服务中,一致性引擎是核心基础模块,支持了Paxos,Raft,EPaxos等多 ...

  9. Apache Hudi 在 B 站构建实时数据湖的实践

    ​简介: B 站选择 Flink + Hudi 的数据湖技术方案,以及针对其做出的优化. 本文作者喻兆靖,介绍了为什么 B 站选择 Flink + Hudi 的数据湖技术方案,以及针对其做出的优化.主 ...

  10. [Go] golang 两个数组 list 的合并方式

    s := append([]int{1, 2}, []int{3, 4}...) Tool:在线Golang代码运行 Cool:在线 AI 编程助手 https://stackoverflow.com ...