小编Dev*_*hen的帖子

在iOS8 +中,UIScreen上的-nativeScale和-scale有什么区别?

此问题中发布的示例日志中,结果完全相同.有谁知道这两者之间是否存在逻辑差异?

即使是Apple的描述也令人困惑.以下是对的描述scale:

与屏幕关联的自然比例因子...此值反映了从默认逻辑坐标空间转换为此屏幕的设备坐标空间所需的比例因子...

以下是他们的描述nativeScale:

物理屏幕的本比例因子

自然本土有什么区别?

ios uiscreen ios8

32
推荐指数
2
解决办法
1万
查看次数

调整CATextLayer的大小以适合iOS上的文本

到目前为止,我的所有研究似乎表明不可能准确地做到这一点.我在一开始就可以选择的唯一两个选项是:

a)使用CATextLayer的布局管理器 - 从4.0版开始在iOS上不可用

b)使用sizeWithFont:constrainedToSize:lineBreakMode:并根据此处返回的大小调整CATextLayer的帧.

选项(b)是最简单的方法,应该有效.毕竟,它与UILabels完美配合.但是当我将相同的帧计算应用于CATextLayer时,框架总是比预期或需要的要大一些.

事实证明,CATextLayers和UILabels中的行间距(对于相同的字体和大小)是不同的.因此,sizeWithFont(其行间距计算将与UILabels的行间距计算匹配)不会返回CATextLayers的预期大小.

通过使用UILabel打印相同的文本,与CATextLayer相比,并比较结果,进一步证明了这一点.第一行中的文本完全重叠(它是相同的字体),但CATextLayer中的行间距比UILabel略短.(对不起,我现在无法上传截图,因为我已经包含机密数据,我目前没有时间制作一个示例项目来获取干净的截图.我稍后会为后人上传它们,当时我有时间)

这是一个奇怪的区别,但我认为可以通过为我在那里使用的NSAttributedString指定适当的属性来调整CATextLayer中的间距,但似乎并非如此.查看CFStringAttributes.h我找不到可能与行间距相关的单个属性.

底线:

因此,在需要适合其文本的图层的情况下,似乎无法在iOS上使用CATextLayer.我是对的,还是我错过了什么?

PS:

  1. 我想使用CATextLayer和NSAttributedString的原因是因为要显示的字符串在不同点上的颜色不同.我想我必须一如既往地回去手工绘制字符串......当然总是可以选择从sizeWithFont中获取结果以获得正确的行高.

  2. 滥用"代码"标签稍微有点使帖子更具可读性.

  3. 我无法使用'CATextLayer'标记帖子 - 令人惊讶的是目前还没有这样的标签.如果有足够声誉的人碰到这篇文章,请相应标记.

sizewithfont ios4 catextlayer

21
推荐指数
1
解决办法
9315
查看次数

数组参数的默认值

用C++玩一下吧.我真正想要做的是能够设置一个具有为数组或指针参数定义的默认值的函数.为了简单起见,我们只使用一个数组.像这样:

void experimentA(char a[3] = {'a', 'b', 'c'});

编译器(带有GNU99的LLVM GCC 4.2)抱怨"预期表达式".这是非常迟钝的,但同事告诉我,这种情况正在发生,因为我试图分配的'值'是静态分配的,而我试图将它赋给(a[3])的变量是auto.

但我不能完全确定是否是这种情况,因为我能够做到这一点:

void experimentB(char a[3] = "abc");

编译器只是警告我,不推荐使用string-literal到char*转换.

我不明白"abc"如何从根本上与{'a','b','c'}有所不同,以引起这种差异.任何见解都非常感谢!

c++ default-value

13
推荐指数
1
解决办法
3685
查看次数

nginx/uwsgi服务器的持久内存Python对象

我怀疑这是可能的,但这是问题和建议的解决方案(提出的解决方案的可行性是这个问题的对象):


我有一些"全局数据"需要可用于所有请求.我将这些数据保存到Riak并使用Redis作为访问速度的缓存层(现在......).数据被分成大约30个逻辑块,每个块大约为8 KB.

每个请求都需要读取这8KB块中的4个,从而从Redis或Riak读取32KB数据.这是对任何特定于请求的数据的补充,这些数据也需要被读取(这是相当多的).

假设每秒甚至3000个请求(这不是一个实时服务器,所以我没有实数,但3000ps是一个合理的假设,可能更多),这意味着从Addis或者Riak的ADDITION转移到已经没有的96KBps - 从应用程序逻辑中进行的重要其他调用.此外,Python 每秒3000次 解析这些8KB对象的JSON .


所有这一切 - 特别是Python必须反复反序列化数据 - 似乎是一种彻头彻尾的浪费,一个非常优雅的解决方案就是将反序列化数据缓存在Python中的内存中本机对象中,我可以定期刷新和当所有这些"静态"数据变得陈旧时.在几分钟(或几小时)内,而不是每秒3000次.

但我不知道这是否可行.您实际上需要一个"始终运行"的应用程序来缓存其内存中的任何数据.而且我知道在nginx + uwsgi + python组合中不是这种情况(与节点之类的东西相比) - 除非我非常错误,否则python内存数据不会持久存储在我所知的所有请求中.

不幸的是,这是一个我"继承"的系统,因此无法在基础技术方面做太多改变,也不足以了解nginx + uwsgi + python组合如何在启动Python进程和持久化方面发挥作用Python内存中的数据 - 这意味着我可能会错误地认为我的上述假设!


因此,直接建议这个解决方案是否有效 +对材料的引用可以帮助我理解nginx + uwsgi + python如何在启动新进程和内存分配方面起作用,这将有很大帮助.

PS:

  1. 已经阅读了nginx,uwsgi等的一些文档,但还没有完全理解我的用例的后果.希望现在在这方面取得一些进展

  2. 如果内存中的东西可以解决,我会扔掉Redis,因为我只缓存上面提到的静态数据.这使得进程内持久性内存中的Python缓存对我来说更具吸引力,减少了系统中的一个移动部分,并且每个请求至少减少了四次网络往返.

python optimization nginx redis uwsgi

8
推荐指数
1
解决办法
3685
查看次数

换行符在UILabel中不起作用

我正在从plist中加载一些帮助文本,并以UIScrollView中的UILabel形式显示相同的文本.代码的部分如下:

    UILabel *sectionDetailLabel = [[[UILabel alloc] initWithFrame:CGRectMake(34, myOriginForThisSection, 286, 20)] autorelease];
    sectionDetailLabel.backgroundColor = [UIColor clearColor];
    sectionDetailLabel.numberOfLines = 0;
    sectionDetailLabel.font = [UIFont systemFontOfSize:12];
    sectionDetailLabel.textColor = [UIColor blackColor];
    sectionDetailLabel.textAlignment = UITextAlignmentLeft;
    sectionDetailLabel.lineBreakMode = UILineBreakModeWordWrap;

    [baseScrollView addSubview:sectionDetailLabel];

    [sectionDetailLabel setText:myStringForThisSection];
    [sectionDetailLabel sizeToFit];
Run Code Online (Sandbox Code Playgroud)

虽然任何"长"文本都被正确地包装成多行,但我无法使用'myStringForThisSection'中的换行符'\n'来手动插入任何换行符.我只看到UILabel中打印的字符'\'和'n',而不是我想要的换行符.

我查了一下,普遍的共识似乎是将numberOfLines设置为0,将lineBreakMode设置为有效值并调用sizeToFit(或根据sizeWithFont :)设置UILabel的框架应该这样做.我似乎在上面的代码中做了所有这些 - 并且在将未知长度的长字符串装入UILabel上的多行时非常有效.那么这里可能缺少什么?

注意:在上面的代码开始执行之前加载了所有使用的变量 - baseScrollView,myStringForThisSection和myOriginForThisSection,并且工作正常.

iphone formatting uilabel

5
推荐指数
1
解决办法
9363
查看次数

"affineTransform"是用于设置CABasicAnimation的有效CALayer关键路径

这似乎是一个非常难以找到答案的基本问题.

用"affineTransform"设置的CABasicAnimations作为关键路径对我来说没有用,在很多地方我见过人们最终使用CATransform3D而不是"transform"键路径.当然这是一个提示,但如果"affineTransform"是否有效,那么确认一下会很好吗?

calayer cabasicanimation cgaffinetransform ios

5
推荐指数
1
解决办法
1369
查看次数

为什么XCode会出现重复符号错误?

我有一个带有两个目标的XCode 6项目 - 一个iOS 8应用程序和一个iOS 8扩展.我在两个目标之间共享一个常量文件.

我错误地在标头中声明了一个没有extern或静态前缀的const int,这导致了重复的符号链接器错误.

这个错误的声明已经存在于项目的过去几次修订中,并且从第一天开始,常量标题已包含在MULTIPLE文件中.

那么,为什么我最近才开始收到错误 - 在我通过删除Main.storyboard对项目文件进行了更改之后 - 这也只是在模拟器构建上?

注意:这发生过


有关错误何时开始的进一步背景信息:

我从项目文件中删除了一个未使用的Main.storyboard,然后立即开始收到此链接器错误.我知道现在不应该发生这个错误,因为相关常数已经使用了很长时间.

我无论如何都修复了错误(通过将const声明为extern),但现在开始出现其他错误.

我现在确信代码没有任何问题,而且只是XCode错了.所以为了测试I ONCE AGAIN删除了Main.storyboard,并且奇怪的错误(抱歉我没有记录)又回来了,代码没有变化.

为了进一步确认,我在同一台机器上检查了一个完整的事先提交(它完美地工作,并且仍然有Main.storyboard).这一次,在没有对代码,项目或Main.storyboard进行任何更改的情况下,我看到了相同的错误.

这证实了我的实际pbxproj和源文件没有任何问题,但数据XCode中的某些问题已缓存(某处).

请注意,清除DerivedData文件夹也没有帮助.

迂回点是,XCode肯定是错误的,无论是突然抛出错误还是不抛弃这一切.但我正在检查是否可能有另一个逻辑解释为什么XCode突然似乎"改变"它的行为.

xcode ios xcode6

5
推荐指数
1
解决办法
606
查看次数

在编辑UITextField时切换UITextAutoCorrectionType

我想根据文本字段中的内容打开/关闭自动更正.

例如,如果用户正在键入像"机器工具"这样的短语,我希望自动更正(对于她要输入的其余单词),但是如果我感觉到 - 比如说 - 像"www"这样的网址的开头.mach .."我想关闭自动修正功能.

我尝试在接收UITextFieldTextDidChangeNotification时执行此操作,方法是根据键入的内容在文本字段上切换autoCorrectionType.虽然此属性在文本字段上的实际值发生更改(使用NSLog验证),但实际的更正行为不会受到影响.因此,如果在编辑会话开始时启用了自动更正,那么即使我将文本字段设置为UITextAutoCorrectionTypeNo,它仍然是如此.因此,"www.foogle ..."会更正为"www.google ..",这在我的书中并不总是可取的.

那么有没有人找到一种在文本字段中即时启用/禁用自动校正(编辑时)的方法?

谢谢.

iphone autocorrect uitextfield uikit

2
推荐指数
1
解决办法
1297
查看次数