cuốn sách gpt4 ai đã làm

ios - Swift:CALayer 边界包含 NaN:[nan nan;南南]?

In lại Tác giả: Walker 123 更新时间:2023-11-28 12:22:08 31 4
mua khóa gpt4 Nike

尽管看到了类似的答案,但我不知道这里发生了什么。我制作了一个自定义的 UIImageview,它应该在创建后立即开始动画:

class HeaderAnimator: UIImageView {

var travelUp = Bool(false)

var img = UIImage()

override init(frame: CGRect) {
super.init(frame: frame)
}

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

override func layoutSubviews() {
//init

//ALWAYS SAME COLOR - black with less opacity, just change shapes randomly via parent
self.image = img

UIView.animate(withDuration: 1,
delay: 0.2,
options: UIViewAnimationOptions.curveEaseIn,
animations: { () -> Void in
//animate
if(self.travelUp)
{
self.center.y += screenSize.height * (50/screenSize.height)
}
khác {
self.center.y -= screenSize.height * (50/screenSize.height)
}

}, completion: { (finished) -> Void in
// ....
print("done")
self.removeFromSuperview()
})

然后我尝试在另一个 View 中的计时器上生成这些 View :

let rand = Double(arc4random_uniform(4))
var bgTimer = Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(self.animateInBg), userInfo: nil, repeats: true)

func animateInBg()
{
var randPos = CGPoint()
var upOrDown = Int(arc4random_uniform(UInt32(2)))
//print(upOrDown)

let h = HeaderAnimator(frame: CGRect(x: 0, y: 0, width: self.bounds.width * (40/self.bounds.width), height: self.bounds.width * (40/self.bounds.width)))
h.img = UIImage(named: "rocket")!

switch upOrDown {
case 0: //down
randPos = CGPoint(x: CGFloat(arc4random()).truncatingRemainder(dividingBy: ( self.bounds.width)), y: self.bounds.height * 0.9)
h.travelUp = false
//h.transform = CGAffineTransform(scaleX: 1, y: -1)

case 1: //up
randPos = CGPoint(x: CGFloat(arc4random()).truncatingRemainder(dividingBy: ( self.bounds.width)), y: self.bounds.height * 0)
h.travelUp = true
mặc định:
randPos = CGPoint(x: CGFloat(arc4random()).truncatingRemainder(dividingBy: ( self.bounds.width)), y: self.bounds.height * 0)
h.travelUp = true
}

h.center = CGPoint(x: self.bounds.width * 0.5, y: 0)
self.addSubview(h)
}

这些 View 应该显示出来,然后向上或向下移出 View ,然后删除。然而,在一个生成后不久,我得到错误:CALayerInvalidGeometry CALayer bounds contains NaN: [nan nan;南南]

这是什么意思?创建这些 View 我做错了什么?

câu trả lời hay nhất

Per Apple ,你不应该子类化 UIImageView。相反,他们建议您将 UIView 子类化并在那里进行绘图。

Do not use image views for custom drawing. TheUIImageView class does not draw its content using the draw(_:) method. Use image views only to present images. To do custom drawing involving images, subclass UIView directly and draw your image there.

关于ios - Swift:CALayer 边界包含 NaN:[nan nan;南南]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44490342/

31 4 0
Walker 123
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress