iOS UIButton 带有圆角和背景 bug

2024-05-20

我发现圆形 UIButton 存在一个奇怪的问题。

这是我创建此按钮的代码块。

let roundedButton = UIButton(type: .System)
roundedButton.frame = CGRectMake(100, 100, 100, 100)
roundedButton.backgroundColor = UIColor.blackColor()
roundedButton.layer.borderColor = UIColor.whiteColor().CGColor
roundedButton.layer.borderWidth = 3.0
roundedButton.layer.cornerRadius = roundedButton.frame.size.width/2
roundedButton.layer.masksToBounds = true
self.view.addSubview(roundedButton)

As you can see, there's a UIButton with backgroundColor, border and corner radius. It's fully rounded. But in the output I get the next appearance: rounded button with 1px border

你可以看到按钮外面 1px 的边框,它是它的背景色(黑色)。似乎它的内边框(白色)不是从按钮的边缘开始的。

您知道如何解决这个问题吗?


使用 CAShapeLayer 代替,它还可以提供增强的性能:

    let roundedButton = UIButton(type: .Custom)
    roundedButton.frame = CGRectMake(100, 100, 100, 100)
    let _border = CAShapeLayer()
    _border.path = UIBezierPath(roundedRect: roundedButton.bounds, cornerRadius:roundedButton.frame.size.width/2).CGPath
    _border.frame = roundedButton.bounds
    _border.strokeColor = UIColor.whiteColor().CGColor
    _border.fillColor = UIColor.blackColor().CGColor
    _border.lineWidth = 3.0
    roundedButton.layer.addSublayer(_border)

    self.view.addSubview(roundedButton)

记住不要使用roundedButton的backgroundColor,只使用CAShapeLayer的fillColor。

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

iOS UIButton 带有圆角和背景 bug 的相关文章

  • 我如何请求增加 iPad 上的 HTML5 本地存储大小,就像 FT 网络应用程序那样?

    如果你打开http app ft com http app ft com 金融时报移动网络应用程序 系统会提示您将该应用程序添加到您的 主页 执行此操作后 当您打开应用程序时 系统会再次提示您允许将 localstoreage 数据库大小增
  • 嵌入了 iOS 项目的 OSX 项目 - 找不到 UIKit.h [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个 OSX 项目和一个 iOS 子项目 子项目使用 UIKit h 但即使子项目已将 UIKit 框架添加到 链接二进制文件与库 部
  • 无法加载捆绑包“MyProjectUITests”,因为它已损坏或缺少必要的资源。尝试重新安装捆绑包

    我愿意向我的应用程序添加单元和 UI 测试 我首先成功配置了单元测试 我尝试对 UI 测试执行相同的操作 添加新的 UI 测试包目标后 这是我的 Podfile platform ios 8 0 use frameworks inhibit
  • 如何对字符串进行 URL 编码

    我有一个 URL 字符串 NSString 带有空格和 人物 如何对整个字符串 包括 符号和空格 很遗憾 stringByAddingPercentEscapesUsingEncoding并不总是 100 有效 它对非 URL 字符进行编码
  • i识别人的扫描图像中的眼睛

    我想开发一个 iPhone 应用程序 它应该识别 QR 阅读器扫描的图像中人的眼睛 脸部和肤色 如何在图像中检测眼睛 虽然这可能是可能的 但我只是警告您 无论编程如何 它都会有一定程度的不准确性 任何面部 视网膜检测软件都可能被欺骗 并且考
  • 实例化新视图控制器时从内存中删除视图控制器

    在我的应用程序中 我实例化新的视图控制器而不是使用 Segues 因为它在动画中看起来更好 因此我的视图继续在后台运行 这会导致大量内存泄漏 我返回主屏幕的代码是 let mainStoryboard UIStoryboard name M
  • 如何测试为 SKProductsRequest 设置不同的区域设置

    我正在 iPhone 应用程序中实现 IAP 并在沙盒环境中工作 我有我的代码设置要处理SKProducts由返回SKProductsRequest获取定价信息 我想测试检索不同区域设置中的价格值 例如欧元或日元 以测试我的格式化代码 我怎
  • RestoreCompletedTransactions() 没有调用 paymentQueue UpdatedTransactions?

    我在 Swift 4 iOS 11 中恢复 IAP 时遇到问题 我的AppDelegate实施SKPaymentTransactionObserver In AppDelegate s didFinishLaunchingWithOptio
  • 当使用密码锁定屏幕时,iOS 应用程序无法在后台访问文件

    Good day 我有一个 IOS 消息应用程序 该应用程序将接收和发送的消息存储在 sqlite3 数据库中 并且该应用程序还会生成日志文件 这可能发生在前台或后台任务中 当在 IOS 设备上禁用密码时 一切工作正常 即使屏幕关闭且应用程
  • iOS 9 中的触觉

    您可以在 iPhone 6s 上使用 iOS 9 中的 Taptic 引擎吗 WatchOS2 和 OS X 能够使用触觉引擎 所以我认为 iOS 9 中也会有 但我找不到任何 API 是的 我对内部进行了逆向工程UIKit我发现了另一种
  • 导航栏标题视图对齐

    我希望我的导航栏在中间显示两件事 其中之一是列表名称 另一个是用户名称 用户名将放置在列表名称下 到目前为止我所做的是 我以编程方式创建了两个标签和一个超级视图 并设置titleView of navigationItem override
  • Swift:解压缩文件

    我正在努力获得String使用本机从 zip 文件内的 txt 文件中获取libcompression图书馆 实际上我使用的代码来自 https github com mw99 DataCompression blob master Sou
  • Cocoa:在 CGEvent 中模拟 Command+Tab

    我想模拟Application Switcher在我的应用程序中 我认为 CGEvent 也许可以做到这一点 好了 了解了CGEvent的一些基本信息后 我就可以模拟按键了Command Tab 但应用程序切换器窗口只是一闪而过 并立即切换
  • 像 peek and pop 一样手动振动 iPhone 6S?

    如何手动触发类似单击的振动 就像使用 peek pop 或应用程序快捷方式时发生的振动一样 这个方法很容易实现 而且效果非常好 我自己尝试过 import AudioToolbox AudioServicesPlaySystemSound
  • 如何才能运行性能测试十次以上?

    默认情况下 Xcode 性能测试会运行十次 我的结果是这十次测试的平均值 问题是每次运行时平均结果变化很大 因此我必须运行测试至少五次才能获得收敛结果 这既乏味又耗时 有没有办法配置 XCode 或单元测试本身运行十次以上 XCTestCa
  • Google 登录显示不正确的项目名称 - iOS

    我一直在集成 Google 登录 以便使用 Google Calendar API 同步日历事件 当我尝试登录时 我收到了这个消息 正如您所看到的 项目 应用程序的名称显示为 project xxxxxxxxx 而不是项目名称本身 如何在这
  • 如何使 macOS 菜单文本动态化?

    我试图使菜单项的文本 在 Mac 应用程序中 动态化 如下所示 main struct VeyBoardApp App State var optionsHidden Bool false var body some Scene Windo
  • 在类型中找不到枚举大小写开关

    有人可以帮我解决这个问题吗 我有以下内容public enum public enum OfferViewRow case Candidates case Expiration case Description case Timing ca
  • IOS - React Native - 未处理的 JS 异常:SyntaxError

    每当我创建新的 React Native 项目时 我都会遇到问题 显示红色屏幕 并在 xcode 控制台中收到以下错误消息 嗨 我有同样的问题 在这里找到了解决方案 https github com facebook react nativ
  • 将 WebView 保存为 PDF 返回空白图像?

    我正在尝试弄清楚如何将 WebView 保存到 PDF 并且完全卡住了 真的很感激一些帮助吗 我在 OSX 上的 Cocoa 和 Swift 中执行此操作 这是到目前为止我的代码 import Cocoa import WebKit cla

随机推荐