从理论上讲,我们可以构建一个包含模拟器,iPhone和iPad的静态库.
但是,Apple没有关于此的文档,我可以找到,并且Xcode的默认模板未配置为执行此操作.
我正在寻找一种可以在Xcode中完成的简单,可移植,可重用的技术.
一些历史:
参考文献:
这是一个好主意,它是一种很好的方法,但它不起作用:http://www.drobnik.com/touch/2010/04/universal-static-libraries/
另一个提问者询问如何在不使用xcode的情况下执行此操作,以及专注于arm6与arm7部分的响应 - 但忽略了i386部分:如何为armv6,armv7和i386编译静态库(fat)
在Xcode 4中,有一个永远不会修复的错误,Xcode阻止你调整视图大小(一些愚蠢的"设计功能") - 你必须确保你之前将所有topbar/statusbar/navbar/tabbar设置为"none"它会解锁控件.
XCode 5似乎已经采取了这个错误......并扩展了它!
现在完全不可能在NIB/XIB文件中编辑UIView的大小.我所做的一切都没有区别,尺寸总是只读.我真的,真的不想写源代码(这样我们的NIB +故事板现在总是看起来总是错误)来解决这个bug,但我找不到任何其他方法.
有人在Xcode中找到了一个workaroind吗?
我试图找出AWDL是什么.在iOS上,如果您通过BlueTooth使用Apple的点对点网络,Apple似乎会创建一个新的网络接口"awdl0"来实现(我猜)IP-over-BT.
但是我找不到关于这个技术或这个界面的任何文档,它的行为方式,我们必须/不能用它做的事情等等.谷歌出现了空白:(.
特别是,我认为它意味着"建立了一个BT连接,我正在顶层运行一个IP桥接器,你可以用它来进行点对点通信".Apple自己的系统库存在错误,这种桥的设置速度不够快,如果过早发送数据,它似乎会被操作系统删除.所以...如果我可以查询这个awdl0,我希望检查"你准备好了吗?" 并延迟P2P消息,直到操作系统开心.
更多信息:我可以获得成对的iOS设备来创建彼此的awdl0连接 - 但它们永远不会被创建到OS X机器,无论BT和Bonjour是否打开,设备是否配对.
一些背景:
在iOS5中,Apple永久禁用了Bonjour/Peer-to-peer网络的蓝牙部分,并发布了一个技术说明,指示每个人如果想继续使用蓝牙作为iOS设备之间的传输,则使用DNS-SD.这很好,但这意味着如果你想要高性能的BT,你必须使用DNS-SD,并且你希望它可靠.
(GameKit 有时可以正常工作,但我们经常会在现实场景中看到糟糕的表现,例如拥挤的公共场所 - 如果您使用DNS-SD就会消失)
DNS-SD协议不包含告诉您硬件使用的信息.但它确实告诉你网络接口(这就是我知道我们在awdl0上运行的方式)
DNS-SD非常棒,我们在iOS设备之间进行点对点的高速,低延迟连接 - 所有GameKit承诺的东西,但是当范围内有多个wifi/BT设备时,它们往往无法提供.
(自我询问和自我回答,因为我花了几个小时在网上寻找这个,大多数资源都说"我最终解决了它"而没有给出解释)
我有一个非常简单的Core Data + Bindings应用程序:
上面的第3项导致应用程序崩溃,错误如下:
[(my NSManagedObject) copyWithZone:]: unrecognized selector sent to instance
Run Code Online (Sandbox Code Playgroud)
实现该方法(!)并在那里放置一个断点,我发现它是由Apple的NSCell类调用的 - 这没有多大帮助:(.
新的错误Apple添加到Xcode4最新版本:如果有超过200行输出,则全部删除.
显然,如果有输出,那是有原因的,我需要看到它:(.
我试图寻找偏好,GUI或按钮,但找不到任何东西.
当然他们没有硬编码,以防止你看到自己的输出?:)
关于OpenGL字体渲染有很多问题,其中许多问题都是由纹理图集(快速但错误)或字符串纹理(仅限固定文本)所满足.
然而,这些方法很差,似乎已经过时了(使用着色器更好/更快地做到这一点怎么样?).对于OpenGL 4.1,有一个很好的问题,看看"你今天应该使用什么?":
那么,今天我们应该在iOS GL ES 2上使用什么?
我很失望,似乎没有开源(甚至是商业解决方案).我知道有很多团队把它搞砸了,花了几周的时间重新发明这个轮子,逐渐学习如何克服和空间等(呃) - 但必须有一个比重写整个"字体"更好的方法从头开始?
据我所知,这有两个部分:
对于1(如何渲染),Apple提供了许多方法来获得"正确的"渲染输出 - 但"简单"的方法不支持OpenGL(也许其他一些方式 - 例如是否有一种简单的方法来映射CoreText输出到OpenGL?).
对于2(如何显示),我们有着色器,我们有VBO,我们有字形纹理,我们有查找纹理,以及其他tecniques(例如上面链接的OpenGL 4.1内容?)
以下是我所知道的两种常见的OpenGL方法:
我也看过,但听到了好的和坏的事情:
在Apple自己的OS /标准库中,我知道几种文本呈现源.注意:我已经在2D渲染项目中详细使用了大部分这些,我关于它们输出不同渲染的陈述是基于直接经验
简而言之:
frame
或bounds
为CAShapeLayer
(并且Apple未实现等效[UIView sizeThatFits]
)那么,什么是编程设定的新创建的框架的正确方法CAShapeLayer
与新添加的CGPath
?Apple的文档在此事上保持沉默.
我尝试过的东西,不起作用:
CAShapeLayer
CGPath
,将其添加到图层frame
- 它是{{0,0},{0,0}}
layer.frame = CGPathGetBoundingBox( layer.path )
帧现在是正确的,但路径现在是DOUBLE偏移 - 改变frame
路径有效地移动一个额外的(x,y)
像素
组: layer.bounds = CGPathGetBoundingBox( layer.path )
layer.position = CGPathGetBoundingBox( layer.path ).origin
有一件事我尝试过DID可以工作,但会导致其他地方出现问题:
编辑:一旦您自动旋转屏幕,这个BREAKS.我的猜测:Apple的自动旋转需要控制"转换"属性.
CAShapeLayer
CGPath
,将其添加到图层{{0,0},{0,0}}
layer.frame = CGPathGetBoundingBox( layer.path )
layer.transform = CGAffineTransformMakeTranslation( CGPathGetBoundingBox( …
Apple的文档没有说明loadView的正确实现.
我发现如果你像这样实现loadView:
- (void)loadView
{
self.view = [[UIView alloc] init];
}
Run Code Online (Sandbox Code Playgroud)
...然后你会得到不同的行为,而不是你根本没有实现它.特别是,在一个20行的项目中,我发现viewWillAppear被调用为self.view的零大小框架 - 除非你使用Apple的默认版本的loadView.
在Google上看,有很多"教程"提供了明显错误的loadView实现 - 例如强制设置大小为(320,480),因为教程作者"发现它可行,如果我这样做".
我想知道正确的实现应该是什么.
注意:在上面的例子中,我将它添加到AppDelegate中的视图层次结构中,如下所示:
[self.window addSubview:(UIViewController*).view];
Run Code Online (Sandbox Code Playgroud)
我相信,在存在UINavigationController或UITabBarController的情况下,Apple会做一些额外的魔术 - 作为副作用 - 导致单行loadView实现正常工作.但是我想写得正确,所以它总能奏效!
注意:我已尝试在根视图上设置自动调整掩码,但它不会改变发生的情况:
- (void)loadView
{
self.view = [[UIView alloc] init];
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}
Run Code Online (Sandbox Code Playgroud) 我在OpenGL ES中绘制行星,并遇到一些有趣的性能问题.一般的问题是:如何最好地在球体上渲染"非常详细"的纹理?
(球体有保证;我对球体特定的优化感兴趣)
基本情况:
限制:
问题:
......目前,我认为唯一可行的想法是:
......但似乎应该有更简单的方法/更好的选择?
我想在HOLLOW CGPath的OUTSIDE边缘附近添加一个阴影(这两个词是关键的:外部+空心:)).
Apple的阴影实现只允许你做"填充"的阴影.
那么...如何剪掉阴影本身的内部?如果它是一个渲染调用,我会调用CGContextSetClip*方法将它剪辑到我想要的位置......但我看不出你是如何得到它的,因为它既不是渲染调用,也不是CALayer本身.
(Apple的一个不幸结果是"隐藏"它作为一组魔法变量,我猜?)
注意:这只是iOS - 在Mac上的IIRC可以直接访问用于创建阴影的滤镜,因此您可以手动创建自己的(任意)阴影.
更新:
我研究了如何剪辑以仅显示阴影的INNER部分:设置"layer.mask",将其作为当前图层的克隆(即相同路径)的新图层,并将路径fillcolor设置为全alpha.
这与我正在尝试的相反,所以如果我能找到一种方法让掩码层翻转alpha(0变为1,1变为0),我会在那里......