小编Nat*_*ies的帖子

在viewWillDisappear期间隐藏UINavigationController的UIToolbar:

我有一个带有UITableView菜单的iPhone应用程序.选择表中的行时,相应的视图控制器将被推送到应用程序的UINavigationController堆栈中.

我的问题是,MenuViewController它不需要工具栏,但是UIViewControllers它们被推入堆栈中.每个UIViewController那个被推开的呼叫setToolbarHidden:animated:viewDidAppear:.要隐藏工具栏,我呼吁setToolbarHidden:animated:viewWillDisappear:.

显示工具栏的工作方式,以便当推出的视图出现时,工具栏向上滑动并且视图正确调整大小.但是,按下后退按钮时,工具栏会向下滑动,但视图不会调整大小.这意味着当另一个视图过渡时,沿着视图底部有一个黑色条带.我已经尝试在隐藏工具栏之前将工具栏的高度添加到视图的高度,但是这会导致视图在转换,以便仍然有一个黑条.

我意识到我可以管理自己的UIToolbar,但UINavigationControllers为了方便起见,我想使用内置的UIToolbar.

这个论坛帖子提到了同样的问题,但没有提到解决方法.

iphone cocoa-touch uitoolbar uikit uinavigationcontroller

30
推荐指数
4
解决办法
2万
查看次数

MPMoviePlayerController成功预加载后,将视频缓存到磁盘

使用MPMoviePlayerController启动视频后initWithContentURL:,是否可以缓存下载的视频,以便下次播放视频时可以通过本地文件:// URI加载?我知道可以自己下载然后启动电影播放器​​,但是我想利用播放器在完成预加载之前启动的能力.

iphone video cocoa-touch

17
推荐指数
1
解决办法
6733
查看次数

"部分功能应用程序"在Javascript环境中是用词不当吗?

我的一个朋友和我正在讨论Javascript中的currying和部分函数应用,我们得出了非常不同的结论,无论是否可以实现.我想出了这个实现Function.prototype.curry,这是我们讨论的基础:

Function.prototype.curry = function() {
    if (!arguments.length) return this;

    var args = Array.prototype.slice.apply(arguments);
    var mmm_curry = this, args;

    return function() {
        var inner_args = Array.prototype.slice.apply(arguments);
        return mmm_curry.apply(this, args.concat(inner_args));
    }

}
Run Code Online (Sandbox Code Playgroud)

使用如下:

var vindaloo = function(a, b) {
    return (a + b);
}

var karahi = vindaloo.curry(1);
var masala = karahi(2);
var gulai = karahi(3);

print(masala);
print(other);
Run Code Online (Sandbox Code Playgroud)

其输出如下Spidermonkey:

$ js curry.js
3
4
Run Code Online (Sandbox Code Playgroud)

他的观点是,由于Javascript function原语本身不支持"部分函数应用程序",因此karahi将部分应用的绑定到变量的函数引用是完全错误的.他的论点是,当vindaloo函数被curry时,函数本身被完全应用并返回一个闭包,而不是"部分应用的函数".

现在,我的观点是,虽然Javascript本身不支持部分应用程序在其function原语(不像ML或Haskell),但这并不意味着你不能创建一个能够的语言的更高阶函数封装部分应用函数的概念.此外,尽管被"应用",函数的范围仍然绑定到它返回的闭包,导致它保持"部分应用".

哪个是对的?

javascript functional-programming

11
推荐指数
1
解决办法
669
查看次数

基于合同的自由职业者的互惠互利的知识产权/版权条款

我在给我的客户的合同中有一个版权部分,声称我保留了作为独立承包商在我工作期间制作的任何作品的版权.这绝对不是为了对我的客户施加任意限制,而是为了保持我决定如何创建和分发我创建的软件的能力.几乎我工作的每个项目都会导致其中至少有一部分作为开​​源发布.我工作的每个项目都使用以相同方式发布的第三方软件,因此我希望继续这样做.

不幸的是,在定义客户使用所述软件的权利时,合同并不那么明确.我提到代码将被许可给他们,但是没有提到有关排他性,生产衍生品的能力等的细节.

因此,客户对我的合同的版权部分提出了担忧,并建议我改写它,以便所有版权在项目的最终付款时完全转移给客户.这几乎肯定会降低我分发我创建的软件的能力; 我更愿意找到一个更具互利性的协议,我们的担忧都得到了解决.

在这种情况下,是否有任何经过验证的软件许可方法?总结一下:

  • 我想保持以我自己的条件许可(部分)软件的能力,与我与客户的关系无关;
  • 向客户保证不会分享任何商业秘密或关键业务逻辑;
  • 使他们能够在未来的项目中重用我的代码;
  • 但不一定让他们卖掉它(我不确定这一点,但是......如果他们出售他们的业务和软件会怎么样?)

我意识到每个人的反馈都将以"IANAL"为前缀,但我很感激您对此事的任何想法.

language-agnostic

7
推荐指数
1
解决办法
1811
查看次数

使用大小约束布置UIView子视图

给定一个看起来像这样的视图层次结构:

ContainerView
  UIScrollView
    ModuleView
    ModuleView
    ModuleView
    ...
Run Code Online (Sandbox Code Playgroud)

我希望ContainerViewModuleViews任意方式(列表,网格等)进行排列.要做到这一点,我将实现-[ContainerView layoutSubviews]迭代ModuleViews,调用-[ModuleView sizeToFit]每个,然后根据所需的布局将它们相对于彼此定位.

我的问题是如何实现最佳实现方式-[ModuleView sizeThatFits:]-[ModuleView layoutSubviews]尽量减少重复,并允许ModuleViews在保持布局正确的同时改变大小.

以最简单的情况为例,其中ModuleViewa UIView是多行UILabel子视图,并且两侧都有填充.它可能看起来像这样:

@implementation ModuleView

- (CGSize)sizeThatFits:(CGSize)size {
  CGFloat padding = 10.0f;
  CGSize labelMaxSize = CGSizeMake(superview.size.width - (2 * padding), CGFLOAT_MAX);
  CGSize labelSize = [self.label.text sizeWithFont:self.label.font constrainedToSize:labelMaxSize lineBreakMode:self.label.lineBreakMode];
  return CGSizeMake(superview.width, labelSize.height + (2 * padding));
}

- (void)layoutSubviews {
  [super layoutSubviews];

  CGFloat padding = 10.0f;
  CGSize labelMaxSize …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch uikit

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

快速,2维表视图

我正在实现一个用2轴显示表格信息的视图,但是我开始遇到渲染所有单元格的性能问题.

视图看起来像这样:

+------------+-------------+------------+------------+------------+
|            |   12.00am   |   1.00am   |   2.00am   |   3.00am   |
+------------+---------+---+---+--------+--------+---+-+---+------+
| Category 1 |    x    |   x   |        x        |  x  | x |      |
+------------+---------+-------+-----+-----------+-----+---+------+
| Category 2 |         |      x      |             x              |
+------------+---------+-------+----+--+--------------------------+
| Category 3 |  |       x       |   x   |            x            |
+------------+--+---------------+-------+-------------------------+
Run Code Online (Sandbox Code Playgroud)

每个x标记单元格的中心,或标记放置在时间轴上的类别中的一条数据.单元格将包含单个文本标签.当按下细胞时,我需要知道按下了细胞.x轴将包含24个标记,并且将存在5到30行数据之间的任何位置.

目前,我已经使用3 main实现了它UIScrollViews; 一个在顶部,一个在侧面,然后是一个大的所有细胞.滚动大滚动视图时,它会更新顶部和侧面滚动视图的contentOffsets.这似乎工作得很好,而且非常直观.

大型scrollView有许多行视图,与左侧边栏中的标题对齐.然后将单元格插入它们各自的行视图中,并在x轴上移动以相对于时间标记对齐.数据单元不一定与x轴的每小时时间增量精确对齐.

我遇到了两个问题:

  1. 它看起来真的很慢.在其中一些表格中,最多可以有2500个单元格.这意味着我可能需要某种视图重用策略.
  2. 当两个单元格彼此相邻时,有一个2px的边界,但是当它是一个单独的单元格时,它有一个1px边框(CALayer每个行和单元格视图的边框都绘制了1px边框).

第一个问题的一些可能的天真解决方案:

  1. 为数据单元创建一个大视图,将其放入主UIScrollView并使用Quartz绘制所有内容(可能在后台线程中).
  2. 实现视图重用策略,并在用户快速滚动时处理空白区域.

有没有人对解决这个问题的最佳方法有任何高级别的意见?我以前没有处理过大量的数据/视图,所以任何输入都会非常感激.

iphone cocoa-touch core-animation quartz-graphics

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