我创建了一个这样的上下文(简化):
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate (bitmapData,
pixWide,
pixHeigh,
8, // bits per component
bitmapBytesPerRow,
colorSpace,
kCGImageAlphaPremultipliedFirst);
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试使用Alphatransparency为我的PNG中的第一个像素提取数据时,它有非常奇怪的alpha值.我有一个简单的PNG,它是一个正方形.在每个边缘上,我切掉了10x10像素,使它们完全透明.阿尔法不应该像153那样.
在CGImage.h中声明了一个kCGImageAlphaOnly.医生说:
kCGImageAlphaOnly没有颜色数据,只有alpha通道.
好吧,这实际上听起来不错,因为我只需要Alpha数据,而不需要其他任何东西.但这引起了我脑海中的一些问号.如果我有一个装备齐全的PNG,有一堆颜色+ alpha:这是否会确保我的PNG转换为匹配该颜色空间?或者我是否必须提供与指定颜色空间匹配的PNG?
编辑:我尝试使用kCGImageAlphaOnly,但是我收到此错误:
<Error>: CGBitmapContextCreate: unsupported parameter combination: 8 integer bits/component; 24 bits/pixel; 0-component colorspace; kCGImageAlphaOnly; 55 bytes/row.
Run Code Online (Sandbox Code Playgroud)
这可能是什么问题?我之前指定了这个:
size_t pixelsWide = CGImageGetWidth(inImage);
size_t pixelsHigh = CGImageGetHeight(inImage);
bitmapBytesPerRow = (pixelsWide * 1); // not * 4, because I just want alpha
bitmapByteCount = (bitmapBytesPerRow * pixelsHigh);
Run Code Online (Sandbox Code Playgroud)
编辑:我一分钟前读过这篇文章:
添加到XCode的PNG在编译期间通过'pngcrush'进行优化.这会进行一些字节交换(从RGBA到BRGA)和alpha的预乘.
我认为这种alpha的预乘会会带来麻烦.
编辑:在pngcrunch对PNG进行字节交换之后,alpha通道保持不变.因为我不关心颜色,只是alpha,我认为预乘不应该是一个太大的问题.
我的PNG已经是24位PNG,我将它们添加到Xcode中.
我假设原点位于左下角,y轴从0开始向上扩展.x轴从0开始向右扩展.
我只是问,因为我的绘图代码得到了非常奇怪的结果......我想确保我没有弄错这个部分.
它是如此令人烦恼:每当我将iPod touch连接到我的Mac时,iTunes都会启动并开始同步.这会导致在Xcode尝试在此时在设备上安装应用程序时与Xcode发生冲突.我的曝光窗口总是跳转到iTunes窗口.然后我必须等待,等待,等待,解除愚蠢的问题,例如"你真的要我删除所有内容并在你的设备上创建一个新的库?",再等一下,退出iTunes(以防止配置文件出现问题) ),并切换回Xcode.
如果我能在连接设备时禁用iTunes的自动启动,那将是如此的伟大,因为我真的不是这样的音乐连环.我只是为了应用而使用它,大多数时候,我只想测试/调试或只是给电池充电.
我在菜单中看不到任何选项.我还尝试禁用iPod后台服务,但这会自动一次又一次地自动启用.所以我希望有一个解决方案来阻止它自动启动.我的意思是......当我真的想要同步或新音乐等等时,我会手动启动iTunes.%$ !!§&!
我有一个基于视图的应用程序,用户可以在其中执行大量自定义操作,例如选择颜色,选择图片等.
首先,我考虑过使用sqlite3,但由于这会导致一个表只有一行(没有多用户应用程序),这对我来说似乎是一个很大的开销.然后我听说了NSUserDefaults.但我不确定这些数据的存储位置.它存储在应用程序的沙箱中吗?或者它存储在其他地方?其他应用是否可以访问该数据?记住这种定制的东西有好处吗?
我在Xcode中创建了一个基于视图的空白新应用程序项目.它为它生成了一个myProjectViewController和一个nib.在该视图控制器的那个nib中,只有一个视图.我想测试一些事件处理的东西并创建一个 - (IBAction)方法,当我触摸视图时它只会记录一个"hello world".但出于某种原因,IB并没有给我机会来联系这个行动.我在那里做错了什么?我还尝试将UIView作为子视图放在那里.当我从那里拖到File的所有者(whoose类是myProjectViewController,我在标题中有IBAction)时,甚至没有提到IBAction.但它实际应该,对吧?
我想将选择器添加到NSMutableArray.但由于它们是不透明的类型而没有物体,这不起作用,对吧?我可以使用包装器对象吗?或者我必须创建自己的?
这个问题看似奇怪.
但是每次我做过PHP项目时,都会遇到这样糟糕的经历:
脚本在10秒后取消运行.这导致非常糟糕的数据库不一致(删除循环的坏例子:用户即将删除相册.相册对象从数据库中删除,然后删除照片的一半,脚本被杀死的地方,以及剩下10,000张照片,没有参考).
这不是交易安全的.我从来没有找到办法安全地做某事,以确保完成.如果脚本被杀死,它就会被杀死.就在循环中间.它刚刚被杀死了.这从来没有发生在使用java的tomcat上.如果需要很长时间,Java会运行并运行和运行.
很多时事通讯脚本试图通过将工作分成很多包来解决这个问题,即一次发送100个,然后重新发送页面(噢,真的很愚蠢),做下一个,等等.最常见的事情是挂起或脚本需要的时间超过10秒,而您的平台也会瘫痪.
但后来,我听说非常大的项目使用像studivz这样的PHP(德国的facebook克隆,实际上是德国最大的网站).所以有一种希望,这种不良行为只是来自不专业的托管公司,因为他们的服务器非常糟糕.这有什么道理?它是否可以这样配置,脚本永远不会因为它们需要更长时间而被杀死?
让我们说我做了一个应用程序,使用户可以做短信和写下来.iPhone OS上还有核心数据吗?或者你如何在iPhone中保存这些数据呢?
有人可以指出有什么区别吗?
在用我们的辛勤工作支持iPhone的时候,我们实际上需要支付这么多钱?
当我想出售应用程序以换取金钱时,我是否必须拥有企业会员资格(299美元)?或者当我"只"拥有更便宜的标准会员资格(99美元)时,我还可以销售应用程序吗?
每次我想将新应用程序上传到App Store时是否需要付费?标准会员资格中的钩子在哪里?
iphone ×9
cocoa-touch ×5
uikit ×4
objective-c ×2
cocoa ×1
core-data ×1
ipod-touch ×1
itunes ×1
php ×1
png ×1
selector ×1