gpt4 book ai didi

ios - UIView 阴影和 InterfaceBuilder

转载 作者:技术小花猫 更新时间:2023-10-29 10:13:18 24 4
gpt4 key购买 nike

我想使用 CALayer 向 UI(图像) View 添加投影。以下代码通常可以正常工作

previewImage.layer.shadowColor = [[UIColor blackColor] CGColor];
previewImage.layer.shadowOffset = CGSizeMake(1.0f, 1.0f);
previewImage.layer.shadowOpacity = 1.0f;
previewImage.layer.shadowRadius = 8.0f;

但是,这仅在我以编程方式创建该 View 并将其作为 subview 添加到我的主视图时才有效。当该 View 在 InterfaceBuilder 中设置并定义为 IBOutlet UIImageView 时,这不起作用。没有影子出现。那么我在这里缺少什么?

最佳答案

在你的项目中添加一个名为 UIView.swift 的文件(或者将其粘贴到任何文件中):

import UIKit

@IBDesignable extension UIView {

/* The color of the shadow. Defaults to opaque black. Colors created
* from patterns are currently NOT supported. Animatable. */
@IBInspectable var shadowColor: UIColor? {
set {
layer.shadowColor = newValue!.CGColor
}
get {
if let color = layer.shadowColor {
return UIColor(CGColor:color)
}
else {
return nil
}
}
}

/* The opacity of the shadow. Defaults to 0. Specifying a value outside the
* [0,1] range will give undefined results. Animatable. */
@IBInspectable var shadowOpacity: Float {
set {
layer.shadowOpacity = newValue
}
get {
return layer.shadowOpacity
}
}

/* The shadow offset. Defaults to (0, -3). Animatable. */
@IBInspectable var shadowOffset: CGPoint {
set {
layer.shadowOffset = CGSize(width: newValue.x, height: newValue.y)
}
get {
return CGPoint(x: layer.shadowOffset.width, y:layer.shadowOffset.height)
}
}

/* The blur radius used to create the shadow. Defaults to 3. Animatable. */
@IBInspectable var shadowRadius: CGFloat {
set {
layer.shadowRadius = newValue
}
get {
return layer.shadowRadius
}
}
}

然后这将在 Interface Builder 中为实用程序面板中的每个 View 提供 > 属性检查器:

Utilities Panel

您现在可以轻松设置阴影。

注意事项:
- 阴影只会在运行时出现。
- clipsToBounds 应该是 false(默认情况下是)

关于ios - UIView 阴影和 InterfaceBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7484855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com