我已经实现了保存applicationWillTerminate和加载applicationWillFinishLoading。有一个完整的对象树,所有对象树都实现了NSCoding协议,并且我已经检查了我输入的类型。
其中一个类还存储NSMutableData了NSKeyedArchive,我怀疑这有时可能会破坏解档。奇怪的是,有时有效,有时无效。我怀疑其中的某些内容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) 我正在尝试使用UIBezierPath绘制一个PieChart,我很接近这样做,但是,我有一个问题,你可以在附带的截图上看到
这是我正在使用的代码:
-(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移动到圆圈的中心,然后关闭它,但是当我添加以下代码行时: …
我有一个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)
如果表格视图在屏幕上,这将完美地工作.但是如果我从导航(返回)返回到表格视图,而不是从选定内容淡入到未选中,则它会从不可见变为未选中.是什么导致这个?
我有一个UIViewController与UIWebView它显示根据该行已在之前点击PDF文件UITableView.现在我想为用户添加一个按钮,以便在本地保存此pdf文件以供离线使用.然后有一秒钟UITableView应该显示已保存的pdf的名称,然后点击它会UIViewController出现另一个,并在UIWebView离线状态下显示保存的pdf .什么是一个好的开始方式?谢谢
我通过搜索看到了一些这些问题,但主要与故事板有关.
我只是务实地创建一个模态视图控制器.它实际上是为了使用可达性,一旦连接被视为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
当自动旋转到横向模式时,我的尺寸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变化正确大小,但内容不转动.
我有一个UIActivityIndicator在iPhone 3G模拟器/设备上工作得很好,但它不适用于iPhone 4(Retina)的模拟器/设备.我想提一下它是在黑色背景上.
ios ×5
objective-c ×4
iphone ×3
drawrect ×2
uiwebview ×2
archiving ×1
macos ×1
nscoding ×1
pdf ×1
uibezierpath ×1
uitableview ×1
xcode ×1