小编jas*_*ori的帖子

如何将图像放在UIButton中文本的右侧?

如果可以避免,我不想使用子视图.我想要一个UIButton背景图片,文字和图像.现在,当我这样做时,图像位于文本的左侧.背景图像,文本和图像都具有不同的突出显示状态.

layout user-interface uibutton ios

284
推荐指数
17
解决办法
15万
查看次数

为什么使用CoreText绘图与UILabel不同?

我正在使用TTTAttributedLabel(使用CoreText)而不是UILabel来加粗某些部分.它工作得很好,但文字看起来不一样.它看起来像是使用不同的字体.我把它设置为相同的字体(Helvetica),但一个是CTFont,一个是UIFont.为什么他们看起来不一样?

  • 这是UIFontUILabel的:[UIFont systemFontOfSize:15]
  • 这是CTFont针对CoreText的:CTFontCreateWithName((__bridge CFStringRef)[UIFont systemFontOfSize:15].fontName, 15, NULL)

UILabel截图:

在此输入图像描述

CoreText屏幕截图:

在此输入图像描述

"散步"中的"p"和"o"是最容易看到字体看起来不一样的部分.CoreText版本中的字母更圆.

objective-c core-text ios

8
推荐指数
2
解决办法
2715
查看次数

你如何制作一个仅在有限时间内有效的可可演示应用程序?

我使用了大量的可可演示应用程序,在3天或一个月左右后停止工作.他们是怎么做到的?什么是最好的方式?另外,有什么限制?

macos cocoa

6
推荐指数
2
解决办法
2788
查看次数

为什么 NSFetchedResultsController performFetch: 在使用等效的 NSFetchRequest 重新创建 NSFetchedResultsController 时崩溃?

为什么[NSFetchedResultsController performFetch:]在重新创建NSFetchedResultsController具有等效项时会崩溃NSFetchRequest

我有一个应用程序,它有一个线程(消息线程)的表视图控制器。当您点击一个线程时,它会加载另一个表视图控制器,该控制器使用 NSFetchedResultsController 来获取该线程的所有消息并显示它们。我使用 NSFetchedResultsController 因为我可以在后台加载消息/删除/添加新消息,而根本不用担心显示它们。

第二个表视图控制器用于所有线程,所以当我点击返回然后点击另一个线程时,我只是删除当前的 NSFetchedResultsController 并为新线程设置一个新的。

以下是重现 CRASH 的步骤:

  1. 点按一个线程,以便它向我显示消息。
  2. 重新加载消息,以便 NSFetchedResultsController 用于显示新消息。
  3. 回去。
  4. 点击另一个线程。
  5. 回去。
  6. 点击第一个线程。

在点击 NSFetchedResultsController 时,会创建与第一个相同的 NSFetchedResultsController。(相同的缓存和一切)。而不是像它应该给出这个错误和崩溃那样工作:

Program received signal: “EXC_BAD_ACCESS”.

NSFetchedResultsController 正在向释放的对象发送消息。

这是堆栈跟踪:

#0  0x95ffd688 in objc_msgSend
#1  0x0060699b in -[NSFetchedResultsController(PrivateMethods) _computeSectionInfo:error:]
#2  0x00601bf0 in -[NSFetchedResultsController performFetch:]
#3  0x0001c170 in -[CMNewMessagesViewController loadMessagesViewControllerForThread:showProfile:] at CMNewMessagesViewController.m:331
Run Code Online (Sandbox Code Playgroud)

3是我的方法

有什么想法吗?任何帮助将非常感激。


解决了!

这是我的错。我使用的是从另一个键值派生的 sectionNameKeyPath。只要 NSFetchRequest 按该键值排序就可以了。问题是它是动态生成的,因为我不想浪费数据库中的空间。我在 NSManagedObject 类中使用了一个由 didTurnIntoFault 清理的实例变量。

现在,我认为实例变量必须已创建然后丢弃,然后在某个时候重新创建,从而使 NSFetchedResultsController 的排序陷入停顿。

这解释了为什么没有 sectionNameKeyPath 或委托解决了这个问题。

现在,我已经切换到 CoreData 对象中保存的键值,它似乎工作得很好。

iphone crash core-data

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

当使用 shadowPath 并将 shadowRadius 设置为 0 时,为什么我的 CALayer 阴影在视网膜显示器上变得模糊?

我有一个按钮,我正在添加一个阴影,如下所示:

b.backgroundColor = [UIColor colorWithRed:0.820 green:0.878 blue:0.941 alpha:1.000];
b.layer.cornerRadius = 3;
b.layer.shadowOffset = CGSizeMake(2, 2);
b.layer.shadowOpacity = 0.2;
b.layer.shadowRadius = 0;
Run Code Online (Sandbox Code Playgroud)

这很好用:

没有阴影路径的视网膜阴影

如果我像这样使用阴影路径:

b.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:b.bounds cornerRadius:b.layer.cornerRadius].CGPath;
Run Code Online (Sandbox Code Playgroud)

视网膜设备上的阴影模糊:

在此处输入图片说明

它在非视网膜设备上很好,如果shadowRadius不为零似乎可以正常工作。我试过将contentsScale和设置rasterizationScale为 2 但它不影响阴影。

还有其他想法吗?

shadow calayer ios retina-display

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

使用ARC,静态const数组的值是否自动赋值为nil?

在ARC下,我知道"堆栈变量是用nil初始化的"(docs).静态const数组的值怎么样?这是有道理的,但我找不到官方陈述的东西.例如:

static NSString * const strings[5] = {
    [2] = @"value2",
    [4] = @"value3",
};
Run Code Online (Sandbox Code Playgroud)

strings[3]== nil

objective-c automatic-ref-counting

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