首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当UIView帧改变时阴影层不调整大小

当UIView帧改变时阴影层不调整大小
EN

Stack Overflow用户
提问于 2018-04-28 02:46:31
回答 3查看 2.4K关注 0票数 7

发布图像ScreenShot

代码语言:javascript
运行
AI代码解释
复制
class ViewController: UIViewController {
    var shadow : UIView!
    override func viewDidLoad() {
        super.viewDidLoad()
        shadow = UIView(frame: CGRect(x: 50,y: 50,width: 150,height:150))
        shadow.backgroundColor = .red
        shadow.dropShadow()
        self.view.addSubview(shadow)

    }

    @IBAction func btnActn(_ sender: Any) {self.shadow.frame = CGRect(x: 50,y: 50,width: 150,height: 50)

    }

}

extension UIView {
 func dropShadow(scale: Bool = true) {
        layer.masksToBounds = false
        layer.shadowColor = UIColor.black.cgColor
        layer.shadowOpacity = 0.5
        layer.shadowOffset = CGSize(width: 1, height: 1)
        layer.shadowRadius = 2
        layer.shadowPath = UIBezierPath(rect: bounds).cgPath
        layer.shouldRasterize = true
        layer.rasterizationScale = scale ? UIScreen.main.scale : 1
    }

}

当UIView帧改变时,阴影层不调整大小,如何更改等于帧大小,这是我的整个UIviewcontroller代码。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-04-28 03:26:27

你有很多方法可以做到这一点:

First:在'viewWillLayoutSubviews‘方法中,您必须像这样调用影子方法。所以,每当你改变了框架,你就不用担心层次了。当您更改视图时,此方法将自动调用:

代码语言:javascript
运行
AI代码解释
复制
override func viewWillLayoutSubviews() {
    shadow.dropShadow()
}

第二步:当要重新帧时,您必须查看大小,然后必须为"autoresizesSubviews“设置"true”,如下所示:

代码语言:javascript
运行
AI代码解释
复制
@IBAction func btnActn(_ sender: Any) {
        self.shadow.frame = CGRect(x: 50,y: 50,width: 150,height: 50)
        self.shadow.autoresizesSubviews = true
    }
票数 2
EN

Stack Overflow用户

发布于 2018-04-28 09:55:58

代码语言:javascript
运行
AI代码解释
复制
Before calling dropShadow, first, try to call layoutIfNeeded

        @IBAction func btnActn(_ sender: Any) {
          self.shadow.frame = CGRect(x: 50,y: 50,width: 150,height: 50)
          self.shadow.layoutIfNeeded()
          self.shadow.dropShadow()
        }
票数 2
EN

Stack Overflow用户

发布于 2018-04-28 03:06:25

问题是,当视图控制器加载到内存中时(在viewDidLoad()中),您只绘制一次阴影。每次重新绘制链接到的视图时,都需要调用dropShadow

您可以通过在更改dropShadow的框架后调用shadow来实现这一点。

代码语言:javascript
运行
AI代码解释
复制
@IBAction func btnActn(_ sender: Any) {
    self.shadow.frame = CGRect(x: 50,y: 50,width: 150,height: 50)
    self.shadow.dropShadow()
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50075673

复制
相关文章
可以同时解析多个binlog吗
其次,当我们采用这种方式解析binlog时 $ mysqlbinlog -vvv --base64-output=decode-rows --start-position=4 --stop-position=2000 binlog.000001 binlog.000002 时,它的工作方式是这样的:
老叶茶馆
2022/12/02
1.1K0
ApplicationContext可以同时获取多个Bean吗?
在实际场景中提供了N个接口给第三方,常规情况下是不会同时调用的,如果N个接口同时调用,随着接口的数量和业务场景逻辑增加,将会给服务带来很不好的体验,但恰恰业务就是如此,面对同一类型的业务查询场景,我将策略模式应用到此接口上来应对。关于实际设计的demo可参考往期文章炫技?No.
疯狂的KK
2023/01/12
1.1K0
ApplicationContext可以同时获取多个Bean吗?
php案例:STDIN的使用
STDIN 是一个预定义常量,用于在PHP中读取标准输入流。它通常用于从控制台或命令行中获取用户输入。
贵哥的编程之路
2024/01/18
1980
php案例:STDIN的使用
@RequestBody 和 @RequestParam可以同时使用
网上有很多博客说@RequestParam 和@RequestBody不能同时使用,这是错误的。根据HTTP协议,并没有说post请求不能带URL参数,经验证往一个带有参数的URL发送post请求也是可以成功的。只不过,我们日常开发使用GET请求搭配@RequestParam,使用POST请求搭配@RequestBody就满足了需求,基本不怎么同时使用二者而已。
全栈程序员站长
2022/07/04
3.7K0
@RequestBody 和 @RequestParam可以同时使用
前端进阶之 a 可以同时 == 1 && == 2 && == 3吗?
当然,我们可以通过重写 Symbol.toPrimitive来制定转换规则,此方法在转原始类型时调用优先级最高。
用户1462769
2019/08/09
7100
一个保存数据的方法(可以切换存放的位置,可以设置密钥)
      在asp.net里面一般的生命周期都比较短,如果想要比较长久的保存数据的话,一般有选择几种方式可供选择,即cookies、ViewState、Session、Cache、application等。他们各有优缺点,也各有其自己的使用范围。       我现在遇到了两个问题,第一个是如何在这几种方式里面快速、方便的切换,第二个是如何实现一个既可以区分用户,又可以区分页面,又节省服务器的资源,又比较安全的保存数据的方式。       ViewState比较符合第二个问题的要求,但是他不太安全,表面上看
用户1174620
2018/02/26
1.1K0
Edittext In Listview,当listview的item中有edittext时,怎么保存edittext的值?
http://blog.csdn.net/lxk_1993/article/details/50527886
103style
2022/12/19
9100
Edittext In Listview,当listview的item中有edittext时,怎么保存edittext的值?
项目端口可以设置为 6666 吗?
读万卷书,行万里路!有的技能可以从书里学会,有的技能却需要在实战中打怪升级慢慢掌握,今天就来和大家聊一个很多小伙伴经常遇到的问题。
江南一点雨
2020/07/29
2K0
项目端口可以设置为 6666 吗?
Spark源码分析之Spark Shell(下)
继上次的Spark-shell脚本源码分析,还剩下后面半段。由于上次涉及了不少shell的基本内容,因此就把trap和stty放在这篇来讲述。 上篇回顾:Spark源码分析之Spark Shell(上) function main() { if $cygwin; then # Workaround for issue involving JLine and Cygwin # (see http://sourceforge.net/p/jline/bugs/40/). # If
用户1154259
2018/01/17
1.5K0
Golang import包时可以使用相对路径吗
但是从Go 1.10开始,可以畅通无阻地使用相对路径来import包,即如下的包导入方式将不会出错。
恋喵大鲤鱼
2019/05/05
6.6K0
你对Redis的使用靠谱吗?Redis的性能高,吗?Redis可以保证原子性,吗?用Redis可以实现事务,吗?用Redis可以当队列,吗?Redis适合用来做什么?
redis Redis是个流行的in-momery存储。接口好用,性能也很强,还支持多种数据结构,加上各种HA和Cluster方案,实在是居家旅行、杀人灭口、必备良药。 必备良药 但是就是因为太好用了,好用到让很多人都晕了脑子: 用Redis性能就大大提高了 用Redis可以保证原子性 用Redis可以实现事务 用Redis可以当队列 …… 这就好像一个股民,在手机上操作买卖几笔股票,赚了一些,然后感叹道"股市就是为我发财而存在的啊"!! 他的下场可想而知。 Redis的种种优势源自于他的设计——简单直接的
大宽宽
2018/05/14
3.9K0
redis灵魂拷问:AOF文件可以保存RDB格式吗
AOF文件保存的是一条一条的写命令,它的优点很明显,保存了所有的写命令,可靠性高。但是缺点也很明显,在写操作频繁的redis使用场景,AOF文件会非常大,受操作系统的限制使用AOF进行故障恢复或者全量同步,需要依次执行每一条命令,效率很低。
jinjunzhu
2020/11/04
6780
redis灵魂拷问:AOF文件可以保存RDB格式吗
EditPlus如何设置保存时不产生.bak备份文件?
大家在使用EditPlus时都会遇到这么一个问题,就是每次保存或者修改后保存时都会生成一个.bak后缀的文件,这个是一个缓存文件。那如何才能不生成该缓存文件呢?操作如下图所示:
黑泽君
2018/10/11
1.6K0
java缓存设置_缓存数据可以清除吗
1、@Cacheable(key = “#vo.toString()”, value=”licence”) //载入缓存
全栈程序员站长
2022/11/09
1.7K0
空白代码可以用来当ID 怎么设置空白代码
现如今网络发展迅速,从而诞生各种游戏平台或者是社交软件,想必在网上冲过浪的人都听过空白代码。尤其在打游戏的时候,或者是在qq昵称上都会用来取昵称,设置此代码算是一门技术活,想必各位也在网上搜寻过各种空白代码如何操作的方法吧。
用户8739990
2021/07/16
5.9K0
空白代码可以用来当ID 怎么设置空白代码
dmz服务器是堡垒机吗?可以当堡垒机用吗?
虽然现在有很多大型企业都会部署堡垒机来确保网络和数据的安全,但很多人对堡垒机的认知并不够,甚至有的人会将堡垒机,防火墙,dmz区混为一谈。那么dmz服务器是堡垒机吗?可以当堡垒机用吗?接下来针对这个问题会为大家做一下简单的解答。
用户8715145
2021/12/29
5.4K0
SQLserver2019当保存时出现不允许保存更改,阻止保存要求重新创建表的更改解决方案。
第一步:工具→选项 2,取消勾选
SingYi
2022/07/14
1.7K0
SQLserver2019当保存时出现不允许保存更改,阻止保存要求重新创建表的更改解决方案。
当不使用会话状态时禁用它
并不是所有的应用程序或页都需要针对于具体用户的会话状态,您应该对任何不需要会话状态的应用程序或页禁用会话状态。
Java架构师必看
2021/03/22
5490
settings 设置时,Blog可以用在任何使用domain.blog.Blog的地方
延迟加载:延迟加载(lazy load)是(也称为懒加载)Hibernate3关联关系对象默认的加载方式,所谓延迟加载就是当调用load方法加载对象时,返回代理对象,等到真正用到对象的内容时才发出sql语句,这个对象上的所有属性都是默认值。 有如下程序代码:
用户7705674
2021/10/08
3950
C语言缓冲区之 gets(str);fflush(stdin); rewind(stdin);setbuf(stdin, NULL);
清空键盘缓冲区很多种方法,如用fflush(stdin); rewind(stdin);setbuf(stdin, NULL);前两者仅对windows有用,最后一个则对Linux系统也适用。那么为什么需要清空键盘缓冲区呢? 以下几个实例:
瑞新
2020/07/07
2.9K0

相似问题

当stty设置更改时,监视并通知用户?

10

如何启用/禁用stty设置?

10

stty设置是病理改变的。

10

在将STDIN写入文件之前,可以取消STDIN的颜色吗?

10

同时从stdin循环

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档