UIBezierPath:roundedRect:byRoundingCorners:cornerRadii:行为怪异

2024-01-23

我正在尝试将按钮的两个角变成圆形。如果我像这样选择 .TopLeft 和 .BottomLeft:

let bezierDisableAdsPath = UIBezierPath(roundedRect: disableAdsButton.bounds, byRoundingCorners: [UIRectCorner.TopLeft , UIRectCorner.BottomLeft] , cornerRadii: CGSizeMake(4.0, 4.0))

        let maskAdsLayer = CAShapeLayer()
        maskAdsLayer.frame = disableAdsButton.bounds
        maskAdsLayer.path = bezierDisableAdsPath.CGPath
        disableAdsButton.layer.mask = maskAdsLayer

比代码运行得更漂亮。

如果我选择 .Top Right 和 .右下角是这样的:

let bezierDisableAdsPath = UIBezierPath(roundedRect: disableAdsButton.bounds, byRoundingCorners: [UIRectCorner.TopRight , UIRectCorner.BottomRight] , cornerRadii: CGSizeMake(4.0, 4.0))

        let maskAdsLayer = CAShapeLayer()
        maskAdsLayer.frame = disableAdsButton.bounds
        maskAdsLayer.path = bezierDisableAdsPath.CGPath
        disableAdsButton.layer.mask = maskAdsLayer

比我看不到圆角。这里发生了什么?

我已经尝试添加 maskAdsLayer 作为子视图,但它不起作用。


如果您正在执行此操作viewDidLoad,此时可能尚未应用自动布局约束,因此按钮的框架可能未达到其最终值,因此disableAdsButton.bounds那时可能不是您所期望的那样。因此,向右圆化的角可能不可见。您可以通过记录来确认这一点bounds运行此代码时按钮的视图,然后在布局视图后再次查看它。

您可以通过推迟此问题直到viewDidAppear或更好,viewDidLayoutSubviews.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIBezierPath:roundedRect:byRoundingCorners:cornerRadii:行为怪异 的相关文章

  • 核心数据二进制数据允许外部存储崩溃

    我在 iOS 12 0 1 上发生崩溃 日志如下 ImageIO CFDataGetBytes data 0x28539b2f0 size 154262 offset 8 count 8 dst 0x16dbf86f0 External d
  • Angular/ HTML5 到 iOS WKWebView 通信

    我们正在尝试看看发送信号的最佳选择是什么To iOS WKWebView fromAngular 6 HTML5 项目 任何示例都会很棒 我们想要做的是 我们在 Angular 网页上有一个按钮 单击该按钮应该通知 iOS 执行某些操作 我
  • 从钥匙串保存和加载 |斯威夫特[重复]

    这个问题在这里已经有答案了 如何简单地将字符串存储在钥匙串中并在需要时加载 有几种SO解决方案 主要参考Git repo 但我需要最新 Swift 上最小和最简单的解决方案 当然 我不想添加 git 框架来简单地在我的项目中存储密码 有类似
  • 以编程方式进行排序时检索 ViewController 堆栈

    static func showMenuView parentVC UIViewController let storyboard UIStoryboard name Main bundle nil let resultController
  • 如何在调用-reloadData后保留UITableView contentoffset

    CGPoint offset table contentOffset table reloadData table setContentOffset offset animated NO unuseful block UITableView
  • 快速从 appDelegate 中 popToRootViewController

    我试图从应用程序委托弹出到导航堆栈的根视图控制器 并且在将 obj c 中的内容转换为 swift 时遇到一些问题 obj c 中的工作原理 UINavigationController navigationController UINav
  • 启动时运行后台任务

    我正在编写一个 iOS 应用程序 它使用 Dropbox Datastore API 在多个设备之间同步数据 在 Android 上 我可以告诉服务在启动时启动 这使其能够同步 设备关闭时可能发生的任何更改 我无法找到让我的应用程序在 iO
  • 如何获取多点触摸 UITapGestureRecognizer 的多个位置

    我的视图中有一个 UITapGestureRecognizer 我可以使用下面的代码很好地获取其触摸的位置 现在 如果我将此识别器的触摸次数更改为 2 或更多 它仍然会为我提供一个位置 如何获得两次触摸的两个位置 tapGesture lo
  • CloudKit 获取当前用户的所有订阅

    我设法在 Apple CloudKit 中保存 更改和删除记录 我什至收到了与订阅相关的通知 但我不知道如何列出当前用户的所有订阅 到目前为止 这是我的代码 let operation CKFetchSubscriptionsOperati
  • 如何同时关闭并弹出到视图控制器

    我的家庭视图控制器是Tabbarcontroller 从选项卡栏我导航到 A Viewcontroller TabarViewcontroller gt A 视图控制器 从A 视图控制器 我推 B 视图控制器 从B Viewcontroll
  • Swift 中 UIViewController 子类成员的双重初始化

    我想制作一个自定义容器视图控制器并向其子类添加一些成员UIViewController 当我尝试使用以下代码从应用程序委托初始化它时 self window UIWindow frame UIScreen mainScreen bounds
  • iOS:保持应用程序在后台运行

    如何让我的应用程序在后台运行 我需要越狱我的 iPhone 才能执行此操作吗 我只需要这个应用程序每隔设定的时间间隔从互联网上检查一些内容 并在需要时发出通知 以供我自己使用 是的 不需要越狱 查看本文档的 实现长时间运行的后台任务 部分A
  • 我以前没见过的 CGRect 语法

    我在一些示例代码中看到了下面的语法 但不确定我是否理解它 CGRect imageRect CGRect size baseImage size 这只是初始化的一种简写方式吗CGRect相当于 CGRect imageRect CGRect
  • 在flutter中跟踪背景位置时使用background_locator插件时出现问题

    我正在尝试使用 flutter 跟踪后台位置 为此我正在使用背景定位器 https pub dev packages background locator插入 它的实现方式是注册某些静态回调函数 我声明了一个 File 类型的类变量来在后台
  • iOS UITableViewCell需要按两次才能调用didSelectRowAtIndexPath

    我有一个 UITableView 有时需要您触摸它两次才能选择一个单元格 更多细节 仅当表格一直向上或一直向下滚动后才需要两次触摸 只需第二次触摸即可呼叫didSelectRowAtIndexPath 当表格以自然的 向上滚动位置 打开时
  • 核心蓝牙在后台进行广告和扫描

    我一直在尝试设置一个应用程序 使设备既扫描外围设备又作为外围设备进行广告 目标是当两个设备通过蓝牙发现彼此靠近时在后台被唤醒 从 Apple 文档来看 您似乎应该能够在后台运行 BLE 启用蓝牙中心和蓝牙外设后台模式 并且当一台设备位于前台
  • 使用 Parse.com 上传视频

    我是解析新手 正在尝试保存视频并将其上传到云端 这是我正在使用的代码 但是当调用 didButtonAction 时 它不断收到错误 我相信问题出在将视频保存为文件时 但我不知道如何解决这个问题 先感谢您 void imagePickerC
  • Xcode 不会在故事板中显示我的文本字段占位符文本

    当我在属性检查器中分配文本字段的占位符值时 它不会显示在故事板中 但是 当我运行应用程序的模拟器时 它就在那里 我缺少什么设置吗 我只想能够在编辑器中看到占位符文本 下面是 xcode 和模拟器之一的屏幕截图 我遇到了同样的问题 幸运的是我
  • 编写支持 iOS 3.1.3 和 iOS 4.x 的 iOS 应用程序时的陷阱

    我想编写一个可以在 iOS 3 1 3 到 iOS 4 1 上运行的应用程序 我知道如何设置部署目标和基础 SDK 阅读 Apple 文档后 它很大程度上依赖于检查类是否可用和 或实例是否响应特定选择器 现在我的问题是 如果 Apple 从
  • 为什么我们在 @synchronized 块中传递 self ?

    我猜 synchronized 块不依赖于对象 而是依赖于线程 对吗 既然如此 我们为什么要传递 self 呢 synchronized是语言提供的用于创建同步作用域的构造 因为使用简单的全局共享互斥锁效率非常低 因此序列化每个单独的互斥锁

随机推荐

  • Mediatr:减少 DI 对象的数量

    我有很多命令和查询 其中大多数需要相同的接口来完成不同的事情 是否有可能如何减少我的每个处理程序都需要的这种混乱 并且一遍又一遍地重复 public class GetCoinByIdQueryHandler IRequestHandler
  • 使用 SOAP,还是不使用 SOAP?就是那个问题

    我有 3g 手机协议栈的背景 现在我需要从 Android 平板电脑与服务器进行通信 我将对接口的两侧进行编码 更新 我应该说 从 Android 多个 slate 到本地服务器 多个 然后通过卫星到单个中央主服务器 现在我想我可能不会实施
  • 生成日期范围的数据,包括数据中不存在的日期

    这是我的表结构和数据 CREATE TABLE event EventID INT 11 NOT NULL AUTO INCREMENT EventDate DATETIME DEFAULT NULL Description VARCHAR
  • 使用projectile在.dir-locals中设置flycheck-clang-include-path

    尝试设置 Flycheck clang include path 而无需包含项目的完整路径 包括使用弹丸的目录 但我收到错误 所以这有效 nil company clang arguments home user Downloads pro
  • 使用 dlopen 动态加载共享库

    我正在尝试使用 dlopen 加载 TestCode so getNumber 是我想从 TestCode so 使用的函数 但是当我加载 so 时 我无法使用该功能 它给出了分段错误 示例程序 测试头 hpp ifndef HEADER
  • 使用 dlib 面部标志裁剪面部

    我正在尝试使用 dlib 识别的面部标志来裁剪面部 右眉毛造成了问题 眉毛是平的而不是沿着眉毛的弧线 我在这里做错了什么 from imutils import face utils import imutils import numpy
  • 在 Pig 中解析复杂的 JSON 字符串

    我想在 Pig 中解析一串复杂的 JSON 具体来说 我希望 Pig 将我的 JSON 数组理解为一个包 而不是单个字符数组 使用 JsonLoader 时 我可以通过指定架构轻松完成此操作 如下所示这个问题 https stackover
  • C#中复制大量数据的方法

    我正在使用以下方法将目录的内容复制到不同的目录 public void DirCopy string SourcePath string DestinationPath if Directory Exists DestinationPath
  • onpreviewframe byte[] 到 int[]

    在预览帧中 我得到 ImageFormat RGB 565 中的字节 现在我想将此 byte 转换为 int 以便我可以进行一些像素操作 我怎么能这么做呢 附 到目前为止 我是这样做的 但似乎还没有优化 public void onPrev
  • 获取日期格式/文化

    如何指定输入字符串的哪一部分是日期和月份 如果输入是01 10 2017 这可以读作2017 年 10 月 1 日 and 2017 年 1 月 10 日 两者都是正确的 我想明确表示01是日期并且10是月份 这样无论区域设置和时间格式如何
  • ngForIn 可以在 Angular 4 中使用吗?

    我正在尝试使用迭代对象的属性 ngFor但使用in 当我尝试这样做时 Controller selector sample controller template ul li b i b obj i li ul class SampleCo
  • HTML/CSS:如何为 tr 创建滚动条

    有人可以告诉我如何为内表创建滚动条吗 内表不显示在容器内 我将容器的背景涂成黄色 桌子本身是蓝色的 我想在表格内看到一个滚动条 Source http nopaste info e51385254e html http nopaste in
  • java中如何实现国际化

    我有一堂课叫Info 我有一堆static String其中描述的变量 public class Info public static stringOne Hello public static stringTwo world 我希望访问这
  • 你明白这个僵局吗?

    我的 GUI 使用 wxPython 在里面AppLogic类我有一个工作线程 它在这个类的方法中运行 这是GUI class class GUI wx app None main window None app logic None de
  • SharpDX、DirectWrite 和 Windows 窗体

    可以使用 DirectWrite 将文本渲染到 WinForm 应用程序中的 PictureBox 中吗 我正在使用 SharpDX 并浏览了 DirectWrite 示例 试图构建最简单的工作案例 我创建了一个表单并只向其中添加了一个图片
  • 根据列值分割大型 csv 文本文件

    我的 CSV 文件有多列已排序 例如 我可能有这样的行 19980102 PLXS 10032 Q A 15 12500 15 00000 15 12500 2 19980105 PLXS 10032 Q A 14 93750 14 750
  • C++ 中单例的线程安全惰性构造

    有没有一种方法可以在 C 中实现单例对象 以线程安全的方式延迟构造 两个线程可能同时是单例的第一个用户 它仍然应该只构造一次 不依赖于预先构造的静态变量 因此在构造静态变量期间单例对象本身可以安全使用 我不太了解我的C 但是在执行任何代码之
  • 使用 maven-compiler-plugin 排除包适用于一个包,但不适用于另一个包

    我的项目具有以下包结构 src com my app school course Course java com my app school course free CourseFree java 我使用Maven来构建项目 在我的pom
  • 使用 Stateful Session Bean 来跟踪用户的会话

    这是我的第一个问题 我希望我做得对 我需要从事 Java EE 项目 因此 在开始之前 我尝试做一些简单的事情 看看是否能做到 我被困住了有状态会话 Bean 这是问题 我怎样才能使用SFSB跟踪用户的会话 我看到的所有例子最终都 放入 S
  • UIBezierPath:roundedRect:byRoundingCorners:cornerRadii:行为怪异

    我正在尝试将按钮的两个角变成圆形 如果我像这样选择 TopLeft 和 BottomLeft let bezierDisableAdsPath UIBezierPath roundedRect disableAdsButton bounds