小编Mik*_*ike的帖子

OCMock可以运行块参数吗?

假设方法签名如下:

- (void)theMethod:(void(^)(BOOL completed))completionBlock;
Run Code Online (Sandbox Code Playgroud)

我想模拟这个方法签名,以确保调用该方法,并只调用完成块.我从其他的帖子好像看到这一个,我可以嘲笑的方法调用,并接受任何块,但是不会运行块.我也知道有一种我可以使用的doDo方法,但我无法弄清楚如何传递一个块并运行它.

有任何想法吗?

谢谢.

unit-testing ocmock ios

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

有没有适合iOS伪本地化的好工具?

我想开始看看我们在iOS代码中对本地化字符串的全面了解.我们尚未准备好去翻译,但我想开始使用伪本地化进行测试.在Localizable.strings文件中自动执行此过程应该很容易,但我似乎找不到任何可以执行此操作的工具.坦率地说,我对一个只是将我的所有字符串都改为"NOT ENGLISH!"的脚本感到满意.如果存在这样的事情.

localization ios

14
推荐指数
1
解决办法
3079
查看次数

如何在更改集合视图单元的大小时为其设置内部视图的动画?

我有一个集合视图,我正在寻找一个效果,当一个单元被点击时,它会增长占据整个屏幕.为了实现这一点,我基本上只是调用performBatchUpdates内部didSelectItemAtIndexPath,并且sizeForItemAtIndexPath知道为所选单元格返回更大的大小.这一切都很有效,细胞会根据需要增长和缩小.

问题出在细胞内部.集合视图单元由由约束管理的中等复杂视图层次结构组成.我希望细胞的子视图随着动画细胞的增长而缩小.不幸的是,我的子视图会立即捕捉到他们的新位置,因为单元格会逐渐变为新的大小.如何确保单元格内容与单元格大小相同?

以下是集合视图控制器中的两个相关方法:

- (CGSize) collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
if ([collectionView.indexPathsForSelectedItems containsObject:indexPath])
    return CGSizeMake(collectionView.bounds.size.width - 20, collectionView.bounds.size.height - (20 + [self.topLayoutGuide length]));
else
    return CGSizeMake(260, 100); 
}

- (void) collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
    [collectionView performBatchUpdates:nil completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

ios autolayout

9
推荐指数
1
解决办法
2988
查看次数

如何确定何时显示UICollectionViewCell?

我想知道在UICollectionViewCell实际屏幕上显示a的时间. cellForRowAtIndexPath是不够的,因为此时实际上没有看到细胞. didEndDisplayingCell是不够的,因为当从视图中移除单元格时会调用它.

UITableViewDelegate有一种willDisplayCell方法,我发现过去对类似的东西很有用,但似乎并不存在UICollectionViewDelegate.

如何确定电池何时被带到屏幕上?

uikit ios uicollectionview

7
推荐指数
2
解决办法
3913
查看次数

genstrings可以在自定义#defines上工作吗?

iOS用于创建本地化字符串的宏在使用时非常棒genstrings.但是,我想在其中一个宏之上创建自己的#define,如下所示:

#define MyLocalizedStringWithDefaultValue(key, tbl, val, comment) \
NSLocalizedStringWithDefaultValue(key, tbl, [NSBundle mainBundle], val, comment)
#endif
Run Code Online (Sandbox Code Playgroud)

基本上,我总是想要反对主捆绑,所以我觉得不需要每次都输入它.这在代码中工作得很好,但是genstrings没有拿起我的宏.有什么我可以做的,让它拿起我的自定义宏?我在手册页上看到,有一个常规参数,看起来像我正在尝试做的,但我无法让它工作.

localization genstrings ios

6
推荐指数
1
解决办法
899
查看次数

iOS:有没有办法伪造用户的语言环境?

我有兴趣允许我的用户选择我的应用程序显示给他们的语言/语言环境.我已经想出如何加载正确的包,选择正确的字符串文件等.但是,我似乎还有一些系统项目无法控制.例如,切换控件.

有没有办法告诉系统这个应用程序现在应该使用特定语言,而不是用户当前的系统设置?

localization nsbundle ios

5
推荐指数
1
解决办法
687
查看次数

Objective-C是否与IFNULL相当?

考虑以下代码行的代码:

NSNumber *someNumber = (someOtherNumber) ? someOtherNumber : [NSNumber numberWithInt: 0];

基本上,它说如果someOtherNumber不是null,请使用它,否则,使用0.我觉得应该有更好的方法来做到这一点.SQL/SQLite有一个方便的函数调用IFNULL,这将使这更简单.如果它存在,它将使代码看起来像:

NSNumber *someNumber = IFNULL(someOtherNumber, [NSNumber numberWithInt: 0]);

在objective-c中是否存在这样的事情?

objective-c ios

1
推荐指数
2
解决办法
372
查看次数

如何使图层保持CABasicAnimation的最终值

请考虑以下动画:

CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
pathAnimation.duration = 1.0;
pathAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
pathAnimation.fromValue = [NSNumber numberWithFloat:0.0f];
pathAnimation.toValue = [NSNumber numberWithFloat:1.0f];
pathAnimation.removedOnCompletion = NO;
pathAnimation.delegate = self;
Run Code Online (Sandbox Code Playgroud)

这将基本上为从一端到下一端的图层绘制动画.问题是,一旦动画完成,该strokeEnd属性将重置为0(最初设置的位置).如何使最终值"坚持"?

我试图在animationDidStop委托方法中更改它.这大部分都有效,但strokeEnd即使放入CATransaction以禁用动画,也可能会暂时导致0 闪烁.我也玩过additivecumulative属性无济于事.有什么建议?

core-animation calayer ios

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