我的iOS 5应用程序中有一个Storyboard.
在那里,我创建了许多屏幕,它完美地运作.
但是,我在代码中创建了一个视图控制器,而不是UI操作的结果,而是处理数据的结尾.我想显示这个视图控制器,然后,作为modalViewController,但也有它在故事板编辑器中设计.
可能吗?使用笔尖我这样做:
ResultsController *rc = [[ResultsController alloc] initWithNibName:@"ResultsController"
bundle:nil];
[self.navigationController presentModalViewController:rc animated:YES];
[rc release];
Run Code Online (Sandbox Code Playgroud)
现在我真的没有nib文件,所以我该怎么做?
我想在屏幕上显示2个视图 - 一个是相机预览,在顶部,而另一个将显示图像或谷歌地图 - 并且生活在屏幕的底部.
我希望它们之间有一个类似渐变的过渡 - 所以它们之间没有粗糙的边缘.这有可能产生这样的效果吗?
编辑:我想要实现的效果应该是这样的(顶部来自相机预览,而底部应该是地图......):

在iOS上我得到了类似的效果,CameraOverlay显示地图并将图层masp设置为渐变:
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.map.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithWhite: 1.0 alpha: 0.0] CGColor], (id)[[UIColor colorWithWhite: 1.0 alpha: 1.0] CGColor], nil];
gradient.startPoint = CGPointMake(0.5f, 0.0f);
gradient.endPoint = CGPointMake(0.5f, 0.5f);
self.map.layer.mask = gradient;
Run Code Online (Sandbox Code Playgroud) 这是更普遍的问题,然后是语言特定的,虽然我在使用python ncurses模块时碰到了这个问题.我需要显示区域设置字符并将它们识别为字符,所以我很快就从curses模块中修补了一些函数/方法.
这就是我称之为快速而丑陋的解决方案,即使它有效.而且变化相对较小,所以我希望我没有搞砸任何东西.我的计划是找到另一个解决方案,但看到它的工作和运作良好,你知道它是怎么回事,我继续处理我必须处理的其他问题,我敢肯定,如果没有这个问题,我将永远不会让它更好.
然而,更普遍的问题出现在我面前 - 显然有些语言允许我们在类中修补大块代码.如果这是我自己只使用的代码,或者变化很小,那就没关系.如果其他开发人员接受我的代码会怎样,他看到我使用了一些众所周知的模块,所以他可以认为它可以像以前一样工作.然后,这种方法突然表现得与之不同.
所以,非常主观,我们应该使用猴子补丁,如果是,何时以及如何?我们该怎么记录它?
编辑:for @guerda:
Monkey-patching是在执行时动态地改变某些代码片段的行为的能力,而不需要改变代码本身.
Python中的一个小例子:
import os
def ld(name):
print("The directory won't be listed here, it's a feature!")
os.listdir = ld
# now what happens if we call os.listdir("/home/")?
os.listdir("/home/")
Run Code Online (Sandbox Code Playgroud) 我想为iPhone应用中播放的视频添加"字幕".我不希望那些字幕编码到视频本身 - 理想情况下我希望有一个显示视频的视图(具有暂停,播放,音量和此类标准控件)以及显示与电影时间一起变化的文本的视图改变.
如果我画了它,就像这样,

因此,基本上,我需要一种方法来获取在播放电影时调用的方法,然后将标签上显示的文本与电影时序同步.
有人用过能够做到的解决方案吗?
我正在尝试启动并运行实际需要检查whois数据库的Web服务.我现在正在做的是丑陋的,我想尽可能地避免它:我调用gwhois命令并解析其输出.丑陋.
我做了一些搜索,试图找到一种pythonic方式来完成这项任务.一般来说,我什么都没有 - 这个旧的讨论列表链接有一种方法来检查域是否存在.不是我想要的......但是,谷歌给了我最好的东西 - 其他一切只是一堆未经证实的问题.
你们中的任何人都成功地启动并运行了一些方法吗?我非常感谢一些提示,或者我应该以开源方式,坐下来自己编写代码?:)
我得到了一些嵌入HTML(在服务器端生成)的javascript代码,如下所示:
function winWriteMail2(){
var win = open('','wininfo', 'width=400,height=300,scrollbars=yes,resizable=yes');
win.document.open();
win.document.write('<HTML><HEAD><META http-equiv="Content-type" content="text/html; charset=iso-8859-2"><LINK rel="stylesheet" type="text/css" href="/css/main.css">');
win.document.write('<scr' + 'ipt language="javascript" type="text/javascript" src="/js/JSFILE.js"></scr' + 'ipt>');
win.document.write('</HEAD><BODY BGCOLOR="#f7f3e7">');
<!-- window content goes here -->
win.document.write('</BODY></HTML>');
win.document.close();
}
Run Code Online (Sandbox Code Playgroud)
此代码在单击元素时执行.
对我来说有问题的部分是包含javascript文件 - 它在Firefox和Chrome中运行正常,但IE(7和8,正如我测试的)表现得很奇怪.随着包含JSFILE那里的行,点击窗口打开,但是为空,CPU 100%忙,唯一的办法是杀死IE.
任何人都可以帮助处理这个问题?也许我应该用其他方式在那里插入javascript文件?
我试过,而不是win.document.write()DOM操作方法,把这部分代码放在win.document.close():
h = win.document.getElementsByName('head')[0];
js = document.createElement('script');
js.src = '/js/JSFILE.js';
h.appendChild(js);
Run Code Online (Sandbox Code Playgroud)
但是后来代码没有被加载,即使在Firefox中(并且用firebug进行检查也没有显示它甚至可以看到它).
经过一些检查后,我发现问题是由定义<script>了src=属性的元素引起的.如果我添加内联脚本,例如:
<script type='text/javascript'>alert('foo')</script>
Run Code Online (Sandbox Code Playgroud)
在我document.write()的窗口打开,警报框出现,一切都很好.
但是使用了
<script type='text/javascript' src='/js/foo.js'></script>
Run Code Online (Sandbox Code Playgroud)
IE在打开新窗口时停止,继续使用100%的CPU.
我在我的Xcode项目中添加了一个字体文件(.ttf)到资源.另外,我将它添加到我的info.plist中的UIAppFonts.
当我想使用这种字体时,我甚至不认为它是IB的选择.
在我的系统上安装字体之后,我开始在IB中看到它,但仍然 - 改变它并没有改变任何东西 - 一些默认的系统字体显示在Interface Builder和iPhone模拟器中.
为了能够使用我自己的字体,我还有更多的步骤吗?
我正在尝试使用AVAudioRecorder在我的iOS应用中获得噪音级别.
我正在使用的代码是:
[self.recorder updateMeters];
float decibels = [self.recorder averagePowerForChannel:0];
// 160+db here, to scale it from 0 to 160, not -160 to 0.
decibels = 160+decibels;
NSLog(@"Decibels: %.3f", decibels);
Run Code Online (Sandbox Code Playgroud)
当手机放在我的桌子上时,我得到的读数大约为90-100dB.
我检查了这个链接,我在那里看到的表显示:
吸尘器 - 80dB
大型管弦乐队 -
最大级别的98dB 随身听 - 100dB
摇滚音乐会前排 - 110dB
现在,无论我的办公室看起来是一个响亮的办公室,它都不是最高级别的随身听.
我在这里应该做些什么来获得正确的读数?因为看起来我的iPhone的麦克风非常敏感.它是iPhone4S,如果它有所作为.
有没有办法写一个装饰器,以便以下工作?
assert 'z' not in globals()
@my_decorator
def func(x, y):
print z
Run Code Online (Sandbox Code Playgroud)
编辑:从anwser搬来
回答hop的"为什么?":语法糖/ DRY.
它不是关于缓存,而是基于x和y的值计算z(和z1,z2,z3,...).
我有很多相关的功能,我不想写
z1, z2, z3=calculate_from(x, y)
Run Code Online (Sandbox Code Playgroud)
在每个单一功能的开头 - 我会在某处弄错.如果这是c我用cpp做这个(如果这是lisp,我会用宏来做...),但我想看看装饰者是否可以做同样的事情.
如果它有帮助,我几乎肯定会将装饰器称为"precalculate_z",它肯定不会成为任何公共API的一部分.
我也许可以通过使用类基础结构获得类似的效果,但我想看看它是否可以用于原始函数.
我看到一些网页在iPod Touch(和iPhone)上显示不同 - 它们几乎看起来像本机的iPhone应用程序.
认为这可以使用样式完成,并且可选地,根据请求中的用户代理在服务器端呈现不同的HTML.
那么,我该如何获得这种效果呢?而且,是否有任何iPhone OS浏览器的模拟器,所以我可以在真正启动它之前测试我的应用程序,看看它是否显示?
iphone ×5
cocoa-touch ×2
python ×2
android ×1
audio ×1
browser ×1
css ×1
decibel ×1
decorator ×1
fonts ×1
html ×1
ios5 ×1
javascript ×1
movieplayer ×1
oop ×1
subtitle ×1
sysadmin ×1
uistoryboard ×1
video ×1
whois ×1