我有一个使用一个应用程序UIWebView,一切是(现在仍然是)在iOS 6完美的工作在iOS 7,不过,它有时踢回一个错误ImageIO: PNG not a PNG file,当我尝试加载某些PNG文件(例如本一).
现在,很明显的PNG文件不被损坏,因为他们对iOS 6的工作,他们有时会在iOS 7连打工,但那时他们有时踢回的错误.我找不到任何确定错误何时发生的常见原因,并且我没有做任何可能导致其问题的异常:我的代码除了在UIWebView中加载页面之外不会触及它们,所以它似乎是WebView在内部做的事情.当然,这使得更难确定.
我知道这是一个奇怪的问题,有点像问"福特是否改变了轮子的工作方式",但苹果是否改变了它在iOS 7中处理PNG的方式? 任何人都可以想到可能导致iOS 7特定错误的原因吗?
我有一个UITableView在编辑模式下使用以下行自动设置多个选择viewDidLoad:
self.tableView.allowsMultipleSelectionDuringEditing = YES;
[self setEditing:YES animated:YES];
Run Code Online (Sandbox Code Playgroud)
但是,我想通过更改其背景颜色来指示选择行,而不是通过自动显示在每行左侧的复选标记来选择.(例如,在邮件应用程序中编辑电子邮件列表时出现的,或在此SO问题中讨论的那些.)我已经在大多数情况下工作了,除了我无法获得这些复选框,自动创建作为UITableView进入编辑模式的一部分,走开.
以下是我正在使用的代码:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return _Hierachy.cellCount;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *testCell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if(testCell == nil) {
testCell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
}
[[testCell textLabel] setText:@"Test Cell"];
return testCell;
}
Run Code Online (Sandbox Code Playgroud)
这是UITableView我到目前为止唯一的方法,所以其他一切都应该是默认行为.
在编辑模式下,是否有人知道如何在左侧隐藏这些复选标记?我在单元的附件部分看到了很多关于复选标记的问题,但据我了解,这是另一回事.我也看到人们谈论这个tableView:didSelectRowAtIndexPath:方法,但是当表进入编辑模式时会创建这些复选标记,当用户点击"完成"时会关闭这些复选标记,因此该方法似乎不相关.
我最接近的是找到这种方法:
- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath{
return NO;
}
Run Code Online (Sandbox Code Playgroud)
但这只是防止单元格的内容缩进,以便为复选标记腾出空间.复选标记仍然出现.
当然有一种隐藏这些复选标记的方法,并且仍然允许在编辑模式下进行多项选择?或者,UITableView在启用了多个选择的编辑模式下,这些检查标记是否是严格的强制行为?
编辑: …
我正在尝试遍历OS X上用户的照片库。在iOS上,我将使用Photos框架,但是显然在OS X上不可用,而我们应该使用Media Library框架。但是,尽管我可以使用上面链接的代码来访问MLMediaSource对象,但我很难确定如何遍历照片资产。
该媒体库框架文档提到了一个mediaObjectForIdentifier:方法,这听起来前途,但并不表明排序标识符应该用什么。我对iOS有相当的经验,但是在OS X上是完整的n00b,所以我感到有些迷茫。
如果我只是想遍历用户库,NSLog对每张照片进行处理,那我该怎么办?是使用Media Library Framework,还是使用其他框架(只要它适用于当前的Photos库)?
我是一位经验丰富的本地 iOS 开发人员,我第一次通过 Unity 涉足 Android。我正在尝试设置自定义着色器,但在使用法线贴图时遇到了一些问题。我已经让它们在我电脑上的 Unity 模拟器中完美运行,但是当我构建到实际设备(三星 Galaxy S8+)时,法线贴图根本不起作用。
我使用 Mars 作为我的测试用例。这是在我电脑上的模拟器中运行的模型:
这是我设备的屏幕截图,运行完全相同的代码。
我做了很多研究,显然在带有 Unity 的 Android 上使用法线贴图并不是一件容易的事情。有很多人在问这个问题,但我找到的几乎每个答案都说诀窍是覆盖纹理导入设置,并强制它为“真彩色”,根据Unity 的说法,它似乎是“RGBA 32 位”文档。不过,这对我没有帮助。
另一个线程建议将 Asino Level 降低为零,另一个线程建议关闭 Mip Maps。我不知道这两个是什么,但都没有帮助。
这是我的着色器代码,经过简化但包含对法线贴图的所有引用:
void surf (Input IN, inout SurfaceOutputStandard o) {
half4 d = tex2D (_MainTex , IN.uv_MainTex);
half4 n = tex2D (_BumpMap , IN.uv_BumpMap);
o.Albedo = d.rgb;
o.Normal = UnpackNormal(n);
o.Metallic = 0.0;
o.Smoothness = 0.0;
}
Run Code Online (Sandbox Code Playgroud)
我已经看到一些线程建议替换着色器代码中的“UnpackNormal()”函数,这表明它可能不是一般在 Android 或移动设备上可以做的事情,但是建议的替换都没有改变任何更好或更糟糕的是:法线贴图继续在模拟器中工作,但不在设备上。
我什至尝试从灰度高度图以编程方式制作我自己的法线贴图,以尝试规避我可能做错的任何导入设置。这是我使用的代码,它同样适用于模拟器,但不适用于设备。
public Texture2D NormalMap(Texture2D source, float strength = 10.0f) …Run Code Online (Sandbox Code Playgroud)