我UITableView在iOS 8下运行,并且我在故事板中使用来自约束的自动单元格高度.
我的一个单元格包含一个UITextView,我需要它根据用户输入收缩和扩展 - 点击缩小/扩展文本.
我这样做是通过向文本视图添加运行时约束并更改约束上的常量以响应用户事件:
-(void)collapse:(BOOL)collapse; {
_collapsed = collapse;
if(collapse)
[_collapsedtextHeightConstraint setConstant: kCollapsedHeight]; // 70.0
else
[_collapsedtextHeightConstraint setConstant: [self idealCellHeightToShowFullText]];
[self setNeedsUpdateConstraints];
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我将其包装在tableView更新中并致电[tableView setNeedsUpdateConstraints]:
[tableView beginUpdates];
[_briefCell collapse:!_showFullBriefText];
[tableView setNeedsUpdateConstraints];
// I have also tried
// [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationTop];
// with exactly the same results.
[tableView endUpdates];
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我的单元格确实扩展(并在进行动画时动画)但是我得到一个约束警告:
2014-07-31 13:29:51.792 OneFlatEarth[5505:730175] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one …Run Code Online (Sandbox Code Playgroud) 编辑2014年2月:请注意,这个问题可以追溯到iOS 2.0!从那时起,图像要求和处理已经发生了很大变化.Retina使图像更大,加载它们稍微复杂一些.内置支持iPad和视网膜图像,您当然应该在代码中使用ImageNamed.
我看到很多人都说imageNamed不好,但同样数量的人说性能很好 - 特别是在渲染时UITableView.例如,在iPhoneDeveloperTips.com上查看此SO问题或本文
UIImageimageNamed用于泄漏的方法因此最好避免,但在最近的版本中已得到修复.我想更好地理解缓存算法,以便做出合理的决定,我可以信任系统来缓存我的图像,以及我需要加倍努力并自己完成.我目前的基本理解是它是一个简单NSMutableDictionary的UIImages文件名引用.它变得越来越大,当内存耗尽时,它会变得更小.
例如,有没有人确切知道后面的图像缓存imageNamed没有响应didReceiveMemoryWarning?Apple似乎不太可能不这样做.
如果您对缓存算法有任何了解,请在此处发布.
我的代码中出现了很多错误.因此,我希望能够在开始时将它们最小化,或者在代码执行之前尽可能多地查看错误.这是可能的,如果是这样,我该怎么做?
我正在寻找模糊日期算法.我刚刚开始写一个,并意识到它是一个繁琐的任务.它迅速退化为许多可怕的代码,以应对特殊情况,如"昨天","上周"和"上个月末"之间的差异,所有这些都可以(在某些情况下)指的是同一天但是个别正确根据今天的日期.
我确信必须有一个开源模糊日期格式化器,但我找不到它.理想情况下,我喜欢使用NSDate(OSX/iPhone)及其格式化程序,但这并不困难.有没有人知道模糊日期格式化程序相对于现在采取任何时间段并返回像(但不限于)的字符串:
在一个理想的世界中,我希望字符串尽可能丰富(即在"刚才之前"返回随机变体,例如"just now").
澄清.我正在寻找比基本的buckts和字符串更微妙的东西.我想要一些知道"昨天"和"上周三"的东西都可以指同一时期,但只有一个是正确的,今天是星期四.
我有一个本地dynamo-db运行.我已经使用JavaScript控制台设置了表格,并且从那里列出了OK.
我还可以从JavaScript控制台向我的表中放置和获取项目:
var params = { TableName:"environmentId", Item: { environmentId: {"S":"a4fe1736-98cf-4560-bcf4-cc927730dd1b"} }};
dynamodb.putItem(params, function(err, data) {
console.log("put : err was " + JSON.stringify(err) + " and data is " + JSON.stringify(data));
});
Run Code Online (Sandbox Code Playgroud)
打印put : err was null and data is {}我认为是"成功"因为
params = { "Key":{"environmentId":{"S":"a4fe1736-98cf-45e0-bcf4-cc927730dd1b"}},"TableName":"environmentId"}
dynamodb.getItem(params, function(err, data) {
console.log("get : err was " + JSON.stringify(err) + " and data is " + JSON.stringify(data));
});
Run Code Online (Sandbox Code Playgroud)
打印,get : err was null and data is {"Item":{"environmentId":{"S":"a4fe1736-98cf-45e0-bcf4-cc927730dd1b"}}}即它检索我刚刚放到桌子上的对象.
但是,如果它启动节点REPL并键入:
var …Run Code Online (Sandbox Code Playgroud) 是否可以通过互联网在两个移动设备(iPhone)之间连接插座?
我试图发现每个设备的IP并直接连接.我知道可以用Bonjour完成,但这只适用于本地网络.我需要通过互联网在两台设备之间建立高速连接.
谢谢.
我有一个我正在努力追查的错误.我相信正在发生的事情是我从底层数据库中删除一个对象,而另一个托管对象上下文(在另一个线程中)有一个错误,并在尝试完成故障时获得'NSObjectInaccessibleException'.
场景是我有一个视图通过一个上下文同时在后台访问数据,另一个威胁是从商店中清除过时的记录.后台线程应该只清除视图不需要的对象 - 显然情况并非如此,但我无法准确地追踪到底发生了什么.当我看到缺陷时,为时已晚,这是一个相对罕见的缺陷,主要发生在现场.
因此我的问题是:在调试CoreData时是否有任何技巧缺失 - 我可以在另一个上下文中跟踪对象的生命周期吗?即,当我删除我的对象时,有一种简单的方法可以查看是否有任何其他上下文引用了同一个对象?使用它,我可以构建一些测试代码来检查我的逻辑并找到错误.
是否可以在UITableView的UITableViewCell中更改响应从左到右"我想删除此行"滑动显示的视图?
目前,"删除"按钮似乎忽略了所有其他UITableViewCell自定义选项.
我想将NSString的第一个字符更改为大写.不幸的是,- (NSString *)capitalizedString将每个单词的第一个字母转换为大写.有一种简单的方法可以将单个字符转换为大写吗?
我目前正在使用:
NSRange firstCharRange = NSMakeRange(0,1);
NSString* firstCharacter = [dateString substringWithRange:firstCharRange];
NSString* uppercaseFirstChar = [firstCharacter originalString];
NSMutableString* capitalisedSentence = [originalString mutableCopy];
[capitalisedSentence replaceCharactersInRange:firstCharRange withString:uppercaseFirstChar];
Run Code Online (Sandbox Code Playgroud)
这看起来有点复杂,但至少不会对底层unicode字符串的编码做出任何假设.
我尝试使用以下代码来合并音频.
AVMutableComposition* composition = [AVMutableComposition composition];
AVURLAsset* videoAsset = [[AVURLAsset alloc]initWithURL:audioURL options:nil];
AVURLAsset* audioAsset1 = [[AVURLAsset alloc]initWithURL:audioURL1 options:nil];
AVURLAsset* audioAsset2 = [[AVURLAsset alloc]initWithURL:audioURL1 options:nil];
AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
NSError* error = NULL;
[compositionVideoTrack insertTimeRange:CMTimeRangeMake(kCMTimeZero,videoAsset.duration)
ofTrack:[[videoAsset tracksWithMediaType:AVMediaTypeVideo]objectAtIndex:0]
atTime:kCMTimeZero
AVMutableCompositionTrack *compositionAudioTrack1 = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionAudioTrack1 insertTimeRange:CMTimeRangeMake(kCMTimeZero,audioAsset1.duration)
ofTrack:[[audioAsset1 tracksWithMediaType:AVMediaTypeAudio]objectAtIndex:0]
atTime:kCMTimeZero
error:&error];
AVMutableCompositionTrack *compositionAudioTrack2 = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
[compositionAudioTrack2 insertTimeRange:CMTimeRangeMake(kCMTimeZero,audioAsset2.duration)
ofTrack:[[audioAsset2 tracksWithMediaType:AVMediaTypeAudio]objectAtIndex:0]
atTime:kCMTimeZero
error:&error];
Run Code Online (Sandbox Code Playgroud)
当我尝试执行"[[audioAsset1 tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]"时,它给出了以下错误
*** Terminating app due to uncaught exception 'NSRangeException',
reason: '*** -[NSMutableArray objectAtIndex:]: index 0 …Run Code Online (Sandbox Code Playgroud) iphone ×4
cocoa-touch ×2
uikit ×2
uitableview ×2
algorithm ×1
audio ×1
autolayout ×1
avurlasset ×1
caching ×1
cocoa ×1
core-data ×1
date ×1
debugging ×1
dynamo-local ×1
formatting ×1
fuzzy ×1
imagenamed ×1
ios ×1
merge ×1
node.js ×1
nsdate ×1
nsstring ×1
p2p ×1
python ×1
sockets ×1
tcp ×1
uiimageview ×1