gpt4 book ai didi

objective-c - 如何解决CALayerInvalidGeometry',原因: 'CALayer position contains NaN: [nan nan]?

转载 作者:技术小花猫 更新时间:2023-10-29 10:17:42 29 4
gpt4 key购买 nike

我有一个错误,它在启动时使应用程序崩溃。这是我得到的错误:

*** Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [nan nan]'
*** First throw call stack:
(0x250b022 0x2709cd6 0x24b3a48 0x24b39b9 0x217ec0d 0x2174f55 0x158f3f7 0xbc74e 0xbe512 0xbfa26 0xbe4ad 0x224ffda 0x224f956 0x224e449 0x224ab9a 0x24df970 0x247f1c1 0x2442967 0x2441d84 0x2441c9b 0x2c0a7d8 0x2c0a88a 0x1559626 0x2aed 0x2a65)
terminate called throwing an exception

我尝试使用异常断点,它没有显示代码的哪一部分出错了。它只在这一点停止 -0xbc74e: movl $0, %eax-

我该如何解决?请帮忙。

*编辑

我找到了抛出异常的部分,但我看不出哪里出了问题

- (void)viewDidLoad {
[super viewDidLoad];
[self.activityView startAnimating];
self.mapView.layerDelegate = self;
self.mapView.touchDelegate = self;
self.mapView.calloutDelegate = self;

NSURL *mapUrl = [NSURL URLWithString:kTiledMapServiceURL];
AGSTiledMapServiceLayer *tiledLyr = [AGSTiledMapServiceLayer tiledMapServiceLayerWithURL:mapUrl];
[self.mapView addMapLayer:tiledLyr withName:@"Tiled Layer"];
.
.
.
}
- (void)mapViewDidLoad:(AGSMapView *)mapView {

AGSEnvelope *envelope = [[AGSEnvelope alloc]initWithXmin:29757.610204117 ymin:40055.0379682464 xmax:29884.6992302249 ymax:40236.6028660071 spatialReference:self.mapView.spatialReference];

//call method to set extent, pass in envelope
[self.mapView zoomToEnvelope:envelope animated:YES];

self.mapView.callout.width = 195.0f;
self.mapView.callout.accessoryButtonHidden = YES;

[self.mapView.gps start];
[self.mapView centerAtPoint:self.mapView.gps.currentPoint animated:YES];

[self.activityView stopAnimating];
self.activityView.hidden = YES;

}

此行导致错误 self.mapView.layerDelegate = self; 默认调用方法 mapViewDidLoad

最佳答案

我认为发生此错误是因为执行的层具有这种形式的框架:

图层框架 == {{inf, inf}, {0, 0}}

这里 inf 是不确定的。它的一组数字。

因此,避免此类问题的解决方案只是在层返回之前创建条件。像这样:

if (layer.frame.size.width ==0 || layer.frame.size.height ==0 ) {
return [self simpleLayer];
}else{
return layer;
}

简单层就像:

-(CALayer *)simpleLayer{
CALayer *layer = [[CALayer alloc] init];
[layer setFrame:CGRectMake(0, 0, 10, 10)];
[layer setHidden:TRUE];
return layer;
}

这种情况解决了我的问题。试试看。

关于objective-c - 如何解决CALayerInvalidGeometry',原因: 'CALayer position contains NaN: [nan nan]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11533120/

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