我有一个UIButton非常类似于标准的iOS键盘字母按钮.
我不知道如何只为底层创建一个阴影,就像iOS一样.

我使用下面的代码,但是我看到了所有方面的阴影,而不仅仅是底部:
CALayer *buttonLayer = [[CALayer alloc] init];
buttonLayer.shadowColor = [UIColor grayColor].CGColor;
buttonLayer.shadowOffset = CGSizeMake(0.f,1.f);
buttonLayer.masksToBounds = NO;
buttonLayer.shadowOpacity = 1.f;
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何达到同样的效果吗?提前致谢.
通过使用[UIBezierPath bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:],我可以创建一个圆形视图,如下所示:

我怎样才能从这一个(或其他方式)中减去另一条路径,以创建这样的路径:

我有什么方法可以做这样的事情吗?伪代码:
UIBezierPath *bigMaskPath = [UIBezierPath bezierPathWithRoundedRect:bigView.bounds
byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight)
cornerRadii:CGSizeMake(18, 18)];
UIBezierPath *smallMaskPath = [UIBezierPath bezierPathWithRoundedRect:smalLView.bounds
byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight)
cornerRadii:CGSizeMake(18, 18)];
UIBezierPath *finalPath = [UIBezierPath pathBySubtractingPath:smallMaskPath fromPath:bigMaskPath];
Run Code Online (Sandbox Code Playgroud) 我需要在swift中创建一个只有两个圆角的矩形(Objective C代码也可以).
目前我的代码正在创建两个矩形
CGPathCreateWithRoundedRect(CGRectMake(0, 0, 30, 60), 5, 5, nil);
Run Code Online (Sandbox Code Playgroud)
和
CGPathCreateWithRoundedRect(CGRectMake(0, 0, 30, 60), 0, 0, nil);
Run Code Online (Sandbox Code Playgroud)
合并它们(有两个直角和两个圆角)但我对代码不满意,我很确定应该有更好的方法来做到这一点.
我是iOS和图形开发的新手.
我试图创建一个ImageView圆角和阴影给它一些深度.我能够为它创建一个阴影UIImageView,但每当我添加代码也使它有圆角时,它只有圆角而没有阴影.我有一个IBOutlet名字myImage,它在viewDidLoad函数内部.有没有人对如何使其有效有任何想法?我究竟做错了什么?
override func viewDidLoad() {
super.ViewDidLoad()
myImage.layer.shadowColor = UIColor.black.cgColor
myImage.layer.shadowOpacity = 1
myImage.layer.shadowOffset = CGSize.zero
myImage.layer.shadowRadius = 10
myImage.layer.shadowPath = UIBezierPath(rect: myImage.bounds).cgPath
myImage.layer.shouldRasterize = false
myImage.layer.cornerRadius = 10
myImage.clipsToBounds = true
}
Run Code Online (Sandbox Code Playgroud) 我正在使用UIBezierPath让我的imageview有圆角,但我也想为imageview添加边框.请记住,顶部是uiimage,底部是标签.
目前使用此代码生成:
let rectShape = CAShapeLayer()
rectShape.bounds = myCell2.NewFeedImageView.frame
rectShape.position = myCell2.NewFeedImageView.center
rectShape.path = UIBezierPath(roundedRect: myCell2.NewFeedImageView.bounds,
byRoundingCorners: .TopRight | .TopLeft,
cornerRadii: CGSize(width: 25, height: 25)).CGPath
myCell2.NewFeedImageView.layer.mask = rectShape
Run Code Online (Sandbox Code Playgroud)

我想为此添加绿色边框,但我无法使用
myCell2.NewFeedImageView.layer.borderWidth = 8
myCell2.NewFeedImageView.layer.borderColor = UIColor.greenColor().CGColor
Run Code Online (Sandbox Code Playgroud)
因为它会切断边框的左上角和右上角,如下图所示:

有没有办法添加UIBezierPath边框以及我当前的代码?
我真的需要一只手.我创建了一个UIBabel的@IBDesignable子类,它可以在XCode Interface Builder中正常工作.但是,即使我将"clipsToBounds"设置为false,Interface Builder仍会剪切它,同时更改@IBInspectable属性.
如果我在模拟器或设备上运行应用程序,UILabel不会被剪裁并给出我想要的结果(同时仍然应用Interface Builder所具有的值).
变更前(子视图可见)

在界面建筑师的变化之后(子视图不在视野范围内)

模拟器更改后(子视图如预期)

任何帮助都将受到大力赞赏.自定义类的代码如下.
@IBDesignable class UIFeaturedLabel: UILabel {
@IBInspectable var borderWidth: Float = 4
@IBInspectable var borderOffsetX: Float = 15
@IBInspectable var borderOffsetY: Float = 5
@IBInspectable var borderColor: UIColor = UIColor.whiteColor()
private var headerView:UIView!
private var footerView:UIView!
override init() {
super.init()
createViews()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
createViews()
}
override init(frame: CGRect) {
super.init(frame: frame)
createViews()
}
func createViews() {
clipsToBounds = false
layer.masksToBounds = false
headerView = UIView() …Run Code Online (Sandbox Code Playgroud)
后自动布局(约束)如何使圆角半径和视图的阴影(即使认为有一些子视图也可以)和方法写的代码。如果我在viewdidload 和 viewDidAppear中编写代码,我无法获得确切的角半径和阴影?
这是我在 viewWillLayoutSubview 中执行的代码,我可以获得拐角半径,但无法获得阴影效果。如果我删除 view.layer.masksToBounds = true 我可以得到阴影,但它不是角落,仅适用于基本视图而不适用于其子视图..
view.layer.cornerRadius = 10
view.layer.masksToBounds = true
view.layer.borderWidth = 1.0
view.layer.borderColor = UIColor.black.cgColor
view.layer.shadowColor = UIColor.black.cgColor
view.layer.shadowOffset = CGSize(width: 3, height: 3)
view.layer.shadowOpacity = 0.7
view.layer.shadowRadius = 4.0
Run Code Online (Sandbox Code Playgroud) 我想在 UIView 和 Swift3、iOS 的阴影层中“切一个洞”
我有一个容器 (UIView),它有 2 个孩子:
我想给叠加一个阴影并切出该阴影的内部矩形,以在 ImageView 的边缘创建类似发光的效果
插入发光至关重要,因为图像占用了屏幕宽度
我的代码迄今为止:
let glowView = UIView(frame: CGRect(x: 0, y: 0, width: imageWidth, height: imageHeight))
glowView.layer.shadowPath = UIBezierPath(roundedRect: container.bounds, cornerRadius: 4.0).cgPath
glowView.layer.shouldRasterize = true
glowView.layer.rasterizationScale = UIScreen.main.scale
glowView.layer.shadowOffset = CGSize(width: 1.0, height: 1.0)
glowView.layer.shadowOpacity = 0.4
container.addSubview(imageView)
container.addSubview(glowView)
Run Code Online (Sandbox Code Playgroud)
结果如下所示:
现在我想剪掉较暗的内部部分,以便只保留边缘的阴影
任何想法如何实现?
我正在创建圆形按钮如下:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let button = GradientButton.createCircularButton(20, yPos: 20, width: 30, height: 30, circleValue:20)
button.addTarget(self, action: #selector(ViewController.didCircleBtnTouched(_:)), forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(button)
}
}
enum ColorType {
case red, green, orange
}
class GradientButton: UIButton {
var colorType: ColorType?
public class func createCircularButton(xPos: CGFloat, yPos: CGFloat, width: CGFloat, height: CGFloat, circleValue: Int) -> GradientButton {
let button = GradientButton()
button.titleLabel!.font = UIFont(name:"HelveticaNeue", size: 12)
let buttonFrame = CGRect(x: xPos, y: yPos, width: width, height: height) …Run Code Online (Sandbox Code Playgroud) ios ×7
swift ×6
objective-c ×2
shadow ×2
uibezierpath ×2
autolayout ×1
calayer ×1
ibdesignable ×1
iphone ×1
rendering ×1
swift3 ×1
uibutton ×1
uiimageview ×1
uiview ×1
xcode ×1