RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1124743
Accepted
Mike Mclaren
Mike Mclaren
Asked:2020-05-13 16:47:54 +0000 UTC2020-05-13 16:47:54 +0000 UTC 2020-05-13 16:47:54 +0000 UTC

图层重新着色我的视图

  • 772

大家好!我有一个浅蓝色的点,在代码中它是 userPositionView。
它看起来像这样:

在此处输入图像描述

但是在使用图层时,我为这个浅蓝色点(userPositionView)“绘制”了一个半径(他们说半径5米内有一个用户),然后我将图层设置为半透明的深蓝色,重新绘制了我的光蓝点 (userPositionView)。

在此处输入图像描述

这是代码:

  func setupUserPosition() {
    userPositionView = UIView(frame: CGRect(origin: CGPoint(x: 200 , y: 300), size: CGSize(width: 22, height: 22)))
    userPositionView.backgroundColor = UIColor(red: 75/255, green: 173/255, blue: 212/255, alpha: 1.0)
    userPositionView.layer.cornerRadius = userPositionView.frame.height / 2
    userPositionView.layer.borderWidth = 2.5
    userPositionView.layer.borderColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0).cgColor
    userPositionView.setupShadow()

    let layer = CAShapeLayer()
    layer.path = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: 44, height: 44), cornerRadius: 50).cgPath
    layer.fillColor = UIColor(red: 21/255, green: 45/255, blue: 71/255, alpha: 0.3).cgColor
    layer.frame.origin = CGPoint(x: (userPositionView.bounds.width / 2) - (44 / 2), y: (userPositionView.bounds.height / 2) - (44 / 2) )
    cRadius = layer
  }

告诉我,我应该怎么做才能使我的半径不会将浅蓝色点重新着色为深色?

ios
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    schmidt9
    2020-05-13T18:33:54Z2020-05-13T18:33:54Z

    你可以这样做——首先绘制一个带有大圆圈的单独图层,然后在其上覆盖一个带有小圆圈的图层,我将其作为单独的视图进行,大圆圈等于它的大小,小圆圈是缩进 1/4

    import UIKit
    
    class CircleView: UIView {
    
        override func layoutSubviews() {
            addLayers()
        }
    
        func addLayers() {
            layer.sublayers?.forEach({ layer in
                layer.removeFromSuperlayer()
            })
    
            // outer layer
    
            let outerCircleLayer = CAShapeLayer()
            outerCircleLayer.fillColor = UIColor(red: 21/255, green: 45/255, blue: 71/255, alpha: 0.3).cgColor
    
            let outerCircleLayerPath = UIBezierPath(ovalIn: bounds)
            outerCircleLayer.path = outerCircleLayerPath.cgPath
    
            layer.addSublayer(outerCircleLayer)
    
            // inner layer
    
            let innerCircleLayer = CAShapeLayer()
            innerCircleLayer.fillColor = UIColor(red: 75/255, green: 173/255, blue: 212/255, alpha: 1.0).cgColor
            innerCircleLayer.strokeColor = UIColor(red: 255, green: 255, blue: 255, alpha: 1.0).cgColor
            innerCircleLayer.lineWidth = 2.5
    
            let inset = frame.width / 4
            let innerCircleLayerPath = UIBezierPath(ovalIn: bounds.inset(by: UIEdgeInsets(top: inset, left: inset, bottom: inset, right: inset)))
            innerCircleLayer.path = innerCircleLayerPath.cgPath
    
            layer.addSublayer(innerCircleLayer)
        }
    
    }
    

    在此处输入图像描述

    • 1

相关问题

  • UIImageView 相对于 superview 缩放后的位置

  • 在密码中授权 type basic 时,符号#swift 4 被错误传输到服务器

  • 将 AppDelegate.h 添加到项目中

  • 调用共享表时出错

  • 接近传感器模拟

  • 帮助 ios 应用程序架构 (MVP)

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5