相关疑难解决方法(0)

UIButton底影

我有一个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)

你能告诉我如何达到同样的效果吗?提前致谢.

objective-c uibutton ios

56
推荐指数
8
解决办法
7万
查看次数

UIBezierPath减去路径

通过使用[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)

iphone objective-c uibezierpath

47
推荐指数
6
解决办法
3万
查看次数

在swift中创建一个只有两个圆角的矩形?

我需要在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和图形开发的新手.

core-graphics ios swift

38
推荐指数
8
解决办法
5万
查看次数

为具有圆角的UIImageView创建阴影?

我试图创建一个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)

shadow uiview uiimageview ios swift

18
推荐指数
4
解决办法
3万
查看次数

UIBezierPath:如何在带圆角的视图周围添加边框?

我正在使用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边框以及我当前的代码?

uibezierpath swift

17
推荐指数
3
解决办法
2万
查看次数

Interface Builder剪切可设计视图

我真的需要一只手.我创建了一个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)

xcode rendering interface-builder ios ibdesignable

5
推荐指数
1
解决办法
716
查看次数

如何在 iOS 中为 UIView 添加圆角半径和阴影

在此处输入图片说明自动布局(约束)如何使圆角半径和视图的阴影(即使认为有一些子视图也可以)和方法写的代码。如果我在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)

ios autolayout swift

4
推荐指数
1
解决办法
7850
查看次数

Swift - 在阴影层切孔

我想在 UIView 和 Swift3、iOS 的阴影层中“切一个洞”

我有一个容器 (UIView),它有 2 个孩子:

  • 一个 UIImageView
  • 该图像顶部的一个 UIView(“叠加”)

我想给叠加一个阴影并切出该阴影的内部矩形,以在 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)

结果如下所示:

图片

现在我想剪掉较暗的内部部分,以便只保留边缘的阴影
任何想法如何实现?

shadow calayer ios swift swift3

2
推荐指数
1
解决办法
1045
查看次数

Swift - 单击时将阴影应用于圆形按钮

我正在创建圆形按钮如下:

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 swift

1
推荐指数
1
解决办法
6943
查看次数