gpt4 book ai didi

ios - 初始化 UIView 时避免 (void)drawRect

转载 作者:行者123 更新时间:2023-11-28 19:06:46 25 4
gpt4 key购买 nike

随着我的应用程序适应 iOS7,我在初始化自定义 UIView 时收到以下错误:Assertion failed: (CGFloatIsValid(x) && CGFloatIsValid(y)),...

当 UIView 初始化时,drawRect 方法被调用并停止工作,因为缺少稍后由另一个 ViewController 处理的数据。当包含 UIView 的 Storyboard场景被调用时,UIView 被初始化。

确保在初始化后不立即调用 drawRect 方法的正确方法是什么。

我的 UIView drawRect: 方法出现错误的行:

- (void)drawRect:(CGRect)dirtyRect{
for (NSInteger i=2; i<=101; i++) {
height = fieldHeight * [[bellCurveArray objectAtIndex:i-1]doubleValue];
CGContextAddLineToPoint(context, x1+t*(i-1), bounds.size.height-y1-height);
//the height is causing the trouble due to the empty bellCurveArray in the early UIView stage
}

最佳答案

根据您的意见,您的drawRect: 实现似乎不能很好地处理尚未设置的数据。像这样的东西可能是你需要的:

- (void)drawRect:(CGRect)dirtyRect{
if (bellCurveArray.length) {
for (NSInteger i=2; i<=101; i++) {
height = fieldHeight * [[bellCurveArray objectAtIndex:i-1]doubleValue];
CGContextAddLineToPoint(context, x1+t*(i-1), bounds.size.height-y1-height);
//the height is causing the trouble due to the empty bellCurveArray in the early UIView stage
}
}
}

另一个观察 - 为什么你的循环是硬编码的?为什么循环不是基于数组的长度?

关于ios - 初始化 UIView 时避免 (void)drawRect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19692965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com