小编Ner*_*ken的帖子

iOS 7是否改变了PNG兼容性/处理?

我有一个使用一个应用程序UIWebView,一切是(现在仍然是)在iOS 6完美的工作在iOS 7,不过,它有时踢回一个错误ImageIO: PNG not a PNG file,当我尝试加载某些PNG文件(例如本一).

现在,很明显的PNG文件不被损坏,因为他们对iOS 6的工作,他们有时会在iOS 7连打工,但那时他们有时踢回的错误.我找不到任何确定错误何时发生的常见原因,并且我没有做任何可能导致其问题的异常:我的代码除了在UIWebView中加载页面之外不会触及它们,所以它似乎是WebView在内部做的事情.当然,这使得更难确定.

我知道这是一个奇怪的问题,有点像问"福特是否改变了轮子的工作方式",但苹果是否改变了它在iOS 7中处理PNG的方式? 任何人都可以想到可能导致iOS 7特定错误的原因吗?

png objective-c uiwebview ios ios7

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

在编辑模式下隐藏UITableView多重选择中的复选标记

我有一个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在启用了多个选择的编辑模式下,这些检查标记是否是严格的强制行为?

编辑: …

editmode uitableview ios

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

遍历OS X上的照片库?

我正在尝试遍历OS X上用户的照片库。在iOS上,我将使用Photos框架,但是显然在OS X上不可用,而我们应该使用Media Library框架。但是,尽管我可以使用上面链接的代码来访问MLMediaSource对象,但我很难确定如何遍历照片资产。

媒体库框架文档提到了一个mediaObjectForIdentifier:方法,这听起来前途,但并不表明排序标识符应该用什么。我对iOS有相当的经验,但是在OS X上是完整的n00b,所以我感到有些迷茫。

如果我只是想遍历用户库,NSLog对每张照片进行处理,那我该怎么办?是使用Media Library Framework,还是使用其他框架(只要它适用于当前的Photos库)?

macos photo objective-c media-library photosframework

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

Unity 法线贴图不适用于 Android 设备

我是一位经验丰富的本地 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)

3d graphics android unity-game-engine normals

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