程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift / UIView / drawrect-如何在需要时更新drawrect大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Swift / UIView / drawrect-如何在需要时更新drawrect?

开发过程中遇到Swift / UIView / drawrect-如何在需要时更新drawrect的问题如何解决?下面主要结合日常开发的经验,给出你关于Swift / UIView / drawrect-如何在需要时更新drawrect的解决方法建议,希望对你解决Swift / UIView / drawrect-如何在需要时更新drawrect有所启发或帮助;

首先,您需要为UIVIEw指定一个指定的初始化程序(以frame初始化)。然后将您的对象f设为类的常量或变量(取决于您的需要),以便可以在项目范围内对其进行访问。另外,您必须将其添加为视图的子视图。看起来像这样

import UIKit

class VIEwController: UIVIEwController {
    let f = test_VIEw(frame: CGRectMake(0, 0, 50, 50))

    overrIDe func vIEwDIDLoad() {
        super.vIEwDIDLoad()
        vIEw.addSubvIEw(f)
    }

    @IBACtion func buttonpressed(sender: UIbutton) {
        f.setNeedsdisplay()
    }
}

class test_VIEw: UIVIEw {

    overrIDe init(frame: CGRect) {
        super.init(frame: framE)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    overrIDe func draw(_ rect: CGRect) {
        let h = rect.height
        let w = rect.wIDth
        let color:UIcolor = UIcolor.yellow

        let drect = CGRect(x: (w * 0.25),y: (h * 0.25),wIDth: (w * 0.5),height: (h * 0.5))
        let bpath:UIBezIErPath = UIBezIErPath(rect: drect)

        color.set()
        bpath.stroke()

        NSLog("drawRect has updated the vIEw")

    }

}

解决方法

我是学习Swift的新手,并且正在尝试运行一个非常简单的应用程序。我要做的就是 让UIView.drawRect在我按下按钮时更新
。无论我尝试什么,它都会在应用程序首次加载时更新/绘制,然后再更新/绘制。我已经为此奋斗了几天,但我找不到任何帮助。

我创建:

  • 单视图应用程序

  • 一个按钮,作为操作链接到视图控制器

  • 一个新的test_View继承了UIView

  • @H_489_36@

    ViewController代码:

    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view,typically from a nib.
    
            var f = test_View()
    
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
        @IBACtion func Button_Pressed(sender: AnyObject) {
            var f = test_View()
            f.setNeedsDisplay()
            NSLog("Button pressed.")
        }
    
    }
    

    test_View代码:

    class test_View: UIView {
    
        override func drawRect(rect: CGRect) {
            let h = rect.height
            let w = rect.width
            var color:UIColor = UIColor.yellowColor()
    
            var drect = CGRect(x: (w * 0.25),y: (h * 0.25),width: (w * 0.5),height: (h * 0.5))
            var bpath:UIBezierPath = UIBezierPath(rect: drect)
    
            color.set()
            bpath.stroke()
    
            NSLog("drawRect has updated the view")
    
        }
    
    }
    

    (注意:每次按下按钮,日志都会更新,这不是问题。只是显示永远不会改变。而且,我尝试绘制带有随机坐标的矩形,因此不是更新,而是我没看到。)

    谢谢你的帮助!

大佬总结

以上是大佬教程为你收集整理的Swift / UIView / drawrect-如何在需要时更新drawrect全部内容,希望文章能够帮你解决Swift / UIView / drawrect-如何在需要时更新drawrect所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。