jch*_*tel 25 xcode rendering ios ibdesignable
从第一个XCode 6/iOS 8 beta版本开始,我一直在开发和关闭应用程序几个月.我最喜欢的功能之一是实时渲染,使用@IBDesignableSwift中的标签.
我无法获得单一的东西来渲染.我认为一定是因为它是测试版,所以我决定等待完整版本再次尝试.它仍然失败了.我认为在我的代码中可能存在来自beta版本的工件,所以我废弃它并重新开始.它仍然无法正常工作.当然,这些错误现在更具描述性.
这是我的代码:
import UIKit
@IBDesignable class MyButton : UIButton {
let UNPRESSED_COLOR = UIColor(red: 221.0/256.0, green: 249.0/256.0, blue: 14.0/256.0, alpha: 1.0)
let PRESSED_COLOR = UIColor(red: 166.0/256.0, green: 187.0/156.0, blue: 11.0/256.0, alpha: 1.0)
var buttonColorValue: UIColor
let TEXT_COLOR = UIColor(red: 72.0/256.0, green: 160.0/256.0, blue: 5.0/256.0, alpha: 1.0)
required init(coder: NSCoder) {
self.buttonColorValue = UNPRESSED_COLOR
super.init(coder: coder)
// Initialization code
self.setTitleColor(TEXT_COLOR, forState: UIControlState.Normal)
self.setTitleColor(TEXT_COLOR, forState: UIControlState.Highlighted)
self.setTitleColor(TEXT_COLOR, forState: UIControlState.Selected)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
super.touchesBegan(touches, withEvent: event)
buttonColorValue = PRESSED_COLOR
self.setNeedsDisplay()
}
override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
super.touchesEnded(touches, withEvent: event)
buttonColorValue = UNPRESSED_COLOR
self.setNeedsDisplay()
}
override func touchesCancelled(touches: NSSet!, withEvent event: UIEvent!) {
super.touchesCancelled(touches, withEvent: event)
buttonColorValue = UNPRESSED_COLOR
self.setNeedsDisplay()
}
override func drawRect(rect: CGRect) {
buttonColorValue.setFill()
let ctx = UIGraphicsGetCurrentContext()
CGContextFillRect(ctx, rect)
//UIBezierPath(roundedRect: rect, cornerRadius: 5.0).fill()
}
}
Run Code Online (Sandbox Code Playgroud)
以下是我在故事板中尝试使用其中一个按钮构建时出现的错误:
IB Designables: Failed to update auto layout status: Interface Builder Cocoa Touch Tool crashed
IB Designables: Failed to render instance of MyButton: Rendering the view took longer than 200 ms. Your drawing code may suffer from slow performance.
Run Code Online (Sandbox Code Playgroud)
正如你在我的代码中看到的那样,我原本希望这个按钮被舍入.我想这可能是造成这个问题的原因,尽管让我感到惊讶的是Apple会设计一个效率低下的圆角矩形绘图算法.我切换到简单地设置颜色并按原样绘制矩形.还是有问题.
我想(我希望,无论如何)有一件小事我做错了,因为我用谷歌搜索了,没有其他人似乎有这个问题.好像它可能是某种无限循环?
这不是我继续需要的东西,但让实时渲染工作将使我的开发更快更容易,因为我将能够看到我的界面并测试它们而无需运行它们.
提前感谢任何有关如何解决此问题的远程线索的人.
jch*_*tel 49
显然,我需要重写init(frame: CGRect)沿init(code: NSCoder).
搞定了!如果有人可以解释为什么这不起作用,那就太好了.否则,我在这里很好.
| 归档时间: |
|
| 查看次数: |
9855 次 |
| 最近记录: |