界面生成器中的 iOS 阴影视图

Posted

技术标签:

【中文标题】界面生成器中的 iOS 阴影视图【英文标题】:iOS shadow view in interface builder 【发布时间】:2018-05-21 02:23:42 【问题描述】:

我正在尝试通过界面生成器为某些视图添加阴影。我似乎无法让阴影影响我的观点。我查看的所有资源都指向相同的代码,所以我不确定我做错了什么。

界面生成器

接口生成器扩展代码

import Foundation
import UIKit

extension UIView 

    //cut irrelevant code for SO Question

    @IBInspectable
    var masksToBounds: Bool 
        get 
            return layer.masksToBounds
        
        set 
            layer.masksToBounds = newValue
        
    


    // Shadow handling
    @IBInspectable
    var shadowColor: UIColor? 
        get 
            if let color = layer.shadowColor 
                return UIColor(cgColor: color)
            
            return nil
        
        set 
            if let color = newValue 
                layer.shadowColor = color.cgColor
             else 
                layer.shadowColor = nil
            
        
    

    @IBInspectable
    var shadowOpacity: Float 
        get 
            return layer.opacity
        
        set 
            layer.opacity = newValue
        
    


    @IBInspectable
    var shadowRadius: CGFloat 
        get 
            return layer.shadowRadius
        
        set 
            layer.shadowRadius = newValue
        
    

    @IBInspectable
    var shadowOffset: CGSize 
        get 
            return layer.shadowOffset
        
        set 
            layer.shadowOffset = newValue
        
    



视图布局

这是结果

【问题讨论】:

500 点对于阴影半径来说太大了。你试过用 5 代替吗? @TylerTheCompiler 是的,5 和 500 产生相同的结果 【参考方案1】:

您的shadowOpacity 属性访问了错误的图层属性。当它应该是layer.shadowOpacity 时,它正在访问layer.opacity。此外,您的 shadowRadius 太大了,应该是 5 左右(当然取决于您的目标),而不是 500。

【讨论】:

【参考方案2】:

我猜这是您添加阴影的自定义搜索栏。我猜它不可见的原因是因为您在控制器和情节提要中的视图都相同大小。尝试使情节提要视图中有一个容器视图,并在情节提要视图中添加一些填充,并将该阴影添加到该容器视图中。这可能会显示一些结果。

【讨论】:

以上是关于界面生成器中的 iOS 阴影视图的主要内容,如果未能解决你的问题,请参考以下文章

具有拐角半径和阴影视图的 UIView 不会在拐角处剪辑子视图

iOS - 界面生成器 - 不继承父视图 alpha 的子视图

iOS中的单元格上未显示阴影

ios UIview 在视图中

iOS开发——代码生成TabBar与视图切换具体解释

界面生成器中的约束“宽度等于高度”,对于同一视图:如何创建这样的约束?