小编Ser*_*nov的帖子

存档/取消存档导致 initForReadingWithData 无法理解存档

我已经实现了保存applicationWillTerminate和加载applicationWillFinishLoading。有一个完整的对象树,所有对象树都实现了NSCoding协议,并且我已经检查了我输入的类型。

其中一个类还存储NSMutableDataNSKeyedArchive,我怀疑这有时可能会破坏解档。奇怪的是,有时有效,有时无效。我怀疑其中的某些内容NSMutableData会破坏存档。

我对所有对象使用encodeObject,除了 bools 和 int,我在其中使用正确的相应方法 (encodeBool:forKey:encodeInt:forKey:)

更清楚地说:代码确实有效,有时它能够重建一个相当完整的对象图,但并非总是如此。

我收到的错误消息是:

initForReadingWithData incomprehensible archive 0x62, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x30, 0x30
Run Code Online (Sandbox Code Playgroud)

添加:失败的代码,大小超过NSMutableData10 MB

- (void)encodeWithCoder:(NSCoder*)encoder {
[encoder encodeObject:self.encodedMessage forKey:@"EncodedMessage"]; //NSData
[encoder encodeObject:self.data forKey:@"Data"]; //NSMutableData (10+MB)
[encoder encodeObject:self.header forKey:@"Header"]; //NSString
[encoder encodeObject:self.fileName forKey:@"FileName"]; //NSString
[encoder encodeInt:self.dataStartIndex forKey:@"DataStartIndex"]; //int
[encoder encodeInt:self.dataEndIndex forKey:@"DataEndIndex"]; //int
}

- (id)initWithCoder:(NSCoder*)decoder {
    if (self = [super init]) {
        self.encodedMessage = …
Run Code Online (Sandbox Code Playgroud)

macos xcode objective-c archiving nscoding

5
推荐指数
2
解决办法
4986
查看次数

使用UIBezierPath绘制饼图

我正在尝试使用UIBezierPath绘制一个PieChart,我很接近这样做,但是,我有一个问题,你可以在附带的截图上看到 screenshot2 这是我正在使用的代码:

-(void)drawRect:(CGRect)rect
{
    CGRect bounds = self.bounds;
    CGPoint center = CGPointMake((bounds.size.width/2.0), (bounds.size.height/2.0));

    NSManagedObject *gameObject = [SCGameManager sharedInstance].gameObject;
    int playerNumber = 0;
    int totalOfPlayers = [(NSSet*)[gameObject valueForKey:@"playerColors"] count];
    float anglePerPlayer = M_PI*2 / totalOfPlayers;
    for (NSManagedObject *aPlayerColor in [gameObject valueForKey:@"playerColors"]){
        //Draw the progress
        CGFloat startAngle = anglePerPlayer * playerNumber;
        CGFloat endAngle = startAngle + anglePerPlayer;
        UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:center radius:self.frame.    size.width/2 startAngle:startAngle endAngle:endAngle clockwise:YES];

        UIColor *playerColor = [SCConstants getUIColorForPlayer:[[aPlayerColor valueForKey:@"colorIndex"] intValue]];
        [playerColor set];
        [path fill];
        playerNumber++;
    }
}
Run Code Online (Sandbox Code Playgroud)

显然,我只需要将我的Path移动到圆圈的中心,然后关闭它,但是当我添加以下代码行时: …

core-graphics objective-c drawrect ios uibezierpath

4
推荐指数
1
解决办法
2895
查看次数

自定义UITableViewCell和setSelected上的动画:动画:

我有一个UITableViewCell子类,它在drawRect:方法中进行绘制.整个矩形是自定义绘制的,包括背景.我能够在保持滚动非常平滑的同时获得非常复杂的单元格.

我的问题:[table deselectRowAtIndexPath:path animated:YES];每当视图出现时我都会打电话,以便遵守Apple的HIG.但是,不会发生动画.当我有一个透明的自定义视图(用子视图创建)时(当时Apple的背景会出现在下面),它可以工作.现在它没有.

我的drawRect:在"动画时间"中被调用一次,大约一半.我认为这是因为它将单元格的突出显示属性设置为1到0,并且当它降至0.5以下时会捕捉到0.

我该如何设置这种过渡的动画?我的猜测是使用通常的beginAnimations:等,并在我的单元格对象中设置一个自定义浮点字段,从1到0.这会drawRect:反复调用动画吗?

更新 我设法使这几乎工作.我已经覆盖了setSelected:animated:就像这样:

- (void) setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:NO];

    if (animated) {
        [CATransaction begin];
        CATransition* animation = [CATransition animation];
        animation.type = kCATransitionFade;
        animation.duration = 0.6;
        [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
        [view.layer addAnimation:animation forKey:@"deselectRow"];
        [CATransaction commit];
    }
}
Run Code Online (Sandbox Code Playgroud)

如果表格视图在屏幕上,这将完美地工作.但是如果我从导航(返回)返回到表格视图,而不是从选定内容淡入到未选中,则它会从不可见变为未选中.是什么导致这个?

iphone uitableview drawrect ios

3
推荐指数
1
解决办法
1万
查看次数

保存由UIWebView本地显示的PDF

我有一个UIViewControllerUIWebView它显示根据该行已在之前点击PDF文件UITableView.现在我想为用户添加一个按钮,以便在本地保存此pdf文件以供离线使用.然后有一秒钟UITableView应该显示已保存的pdf的名称,然后点击它会UIViewController出现另一个,并在UIWebView离线状态下显示保存的pdf .什么是一个好的开始方式?谢谢

pdf iphone objective-c uiwebview ios

3
推荐指数
1
解决办法
7755
查看次数

模态视图控制器加载黑色背景

我通过搜索看到了一些这些问题,但主要与故事板有关.

我只是务实地创建一个模态视图控制器.它实际上是为了使用可达性,一旦连接被视为NotReachable,我提出了一个模态视图控制器,如下所示:

-(void)checkConnection: (Reachability*) curReach {
    NetworkStatus netStatus = [curReach currentReachabilityStatus];
        if (netStatus == NotReachable) {
            NSLog(@"inernet reach - not reachable");

            UIViewController *modalViewController = [[MESConnectionModalViewController alloc] init];
            modalViewController.view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.2f];
            modalViewController.view.opaque= YES;
            [self.window.rootViewController presentModalViewController:modalViewController animated:YES];

}
}
Run Code Online (Sandbox Code Playgroud)

在视图控制器中MESConnectionModalViewController,目前没有代码,只有标准.

当模态视图转换到当前视图时,背景看起来是正确的(这是短暂的一两秒).一旦模态完全在屏幕上,它就是全黑,而不是部分黑色.我期待基本上略微涵盖当前的内容.上面的代码在应用程序委托中是seutp,每当Reachability更新时调用,所以我试图在解决因特网连接时显示模态视图控制器.

objective-c uiviewcontroller modalviewcontroller presentmodalviewcontroller ios

3
推荐指数
1
解决办法
2693
查看次数

UIWebView旋转内容

当自动旋转到横向模式时,我的尺寸UIWebView变化很好,只有内容保持在纵向模式.

如何UIWebView在横向模式下显示内容?

编辑 代码真的没有什么特别之处;

我在Nib文件和我做的UIViewController中连接UIWebView;

[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://google.com"]]];
Run Code Online (Sandbox Code Playgroud)

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

UIWebView变化正确大小,但内容不转动.

uiwebview ios

0
推荐指数
1
解决办法
1万
查看次数

UIActivity指标无法在iPhone 4(Retina)上运行

我有一个UIActivityIndicator在iPhone 3G模拟器/设备上工作得很好,但它不适用于iPhone 4(Retina)的模拟器/设备.我想提一下它是在黑色背景上.

iphone uiactivityindicatorview retina-display ios-simulator

0
推荐指数
1
解决办法
1059
查看次数