小编Ser*_*nce的帖子

如何复制 NSMutableAttributedString

我想知道如何才能复制一份NSMutableAttributedString. 我有一个名为的属性text,我想在某个时刻保存其内容并在发生某些情况时恢复到它。我尝试创建一个名为textCopywhere 我可以将其保存到的属性@property (nonatomic, copy),但是当我这样做时出现运行时错误:

-[NSConcreteAttributedString insertAttributedString:atIndex:]:发送到实例的无法识别的选择器。

我将如何实现这个目标?

每当我将 设为 时,我都会收到此NSMutableAttributedString消息@property (nonatomic, copy)。我不明白为什么这行不通。NSMutableAttributedString一般来说,无论我是否使用它的 setter 方法,复制参数似乎都不起作用。

objective-c nsattributedstring

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

可以使用空值初始化NSArray吗?

我有以下通常包含CGColor的数组:

_strokeColors = [[NSArray alloc] initWithObjects:NULL,NULL,NULL,NULL, nil];
Run Code Online (Sandbox Code Playgroud)

我有与此阵列(即平行一些其他阵列_fillColors,_mutuablePaths),其具有的值的相同的量.我遍历所有这些数组以检查数据,在这个特定的实例中,所有数组_strokeColors都必须为NULL.但是,我注意到上面的数组大小为0.

初始化这样的数组需要为每个值读取NULL的模式是什么?

iphone cocoa-touch objective-c nsarray ios

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

从CAShapeLayer获得真正糟糕的表现

我有一个存储在一个大文件中的图形,并分解为很多mutablePaths如下:

mutablePath = CGPathCreateMutable();
CGPathMoveToPoint(mutablePath, NULL, 123.70,49.23);
CGPathAddCurveToPoint(mutablePath, NULL, 124.57,54.05,124.06,58.98,123.43,63.80);
CGPathAddCurveToPoint(mutablePath, NULL, 123.09,66.42,122.70,69.03,122.43,71.66);
CGPathAddCurveToPoint(mutablePath, NULL, 121.64,81.02,121.35,83.58,120.92,86.11);
CGPathCloseSubpath(mutablePath);
CGPathAddPath(outlineMutablePath, NULL, mutablePath);
CGPathRelease(mutablePath);
Run Code Online (Sandbox Code Playgroud)

我将所有路径合并为4-5路径CGPathAddPath,然后将每个路径添加到a CAShapeLayer.我附上CAShapeLayers如下视图:

for (int i = 0; i < [_graphic.shapeLayers count]; i++)
{
    [self.layer addSublayer:[_graphic.shapeLayers objectAtIndex:i]];
}
Run Code Online (Sandbox Code Playgroud)

正确地绘制图形,但是,当我在图形所在的同一屏幕上拉出模态视图时,模态视图在屏幕上显示时会非常糟糕.还注意到它需要花费相当多的时间来绘制形状,并且当我试图离开它并转到不同的导航控制器时,通常看起来似乎会压低屏幕.在运行时间配置文件时,我注意到花费的大部分时间都在CALayer layoutSublayersCALayer drawInContext.

图形确实有很多路径,但不是那么复杂,我认为iOS绘制它应该有这么多麻烦.当我在drawRect中手动绘制这些路径时,我没有得到这种效果.另外,专家告诉我,以这种方式绘制图形会更好.这让我相信我在某处做错了什么.

iphone graphics performance cocoa-touch ios

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

禁用 UISlider 滑动,但仍允许它接收 UIControlEventTouchDown

有没有办法禁用 aUISlider滑动,但让它UIControlEventTouchDown触发?我认为可以完成的一种方法是将滑块起始值设置为与结束值相同,但我想避免这样做。有人知道更好的方法吗?

iphone cocoa-touch uislider ios

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

从字符串缓慢加载UIWebView

我试图UIWebView从字符串加载如下:

    NSString* plainContent = @"...";
    NSString* htmlContentString = [[NSString stringWithFormat:
                                   @"<html>"
                                   "<style type=\"text/css\">"
                                   "body { background-color:transparent; font-family:Arial-BoldMT; font-size:18;}"
                                   "</style>"
                                   "<body>"
                                   "<p>%@</p>"
                                   "</body></html>", plainContent] retain];
    [webView loadHTMLString:htmlContentString baseURL:nil];
Run Code Online (Sandbox Code Playgroud)

普通内容有一些简单的HTML,大约有5个链接和400个字符.我试图在我的iPhone5上运行它,第一次加载它总是需要几秒钟.有谁知道为什么会这样,以及如何解决这个问题?

iphone cocoa-touch uiwebview ios

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

随着新的XCode得到"常量与布尔表达式的比较总是假的"

下载XCode 6.3后,现在突然出现以下代码块:

AVKeyValueStatus tracksStatus = [inputAsset statusOfValueForKey:@"tracks" error:&error];
if (!tracksStatus == AVKeyValueStatusLoaded)
{
      return;
}
Run Code Online (Sandbox Code Playgroud)

我现在得到:

常量与布尔表达式的比较始终为false stackoverflow

任何人都可以解释为什么会突然发生这种情况以及重写这个表达式的正确方法是什么?

cocoa-touch objective-c ios

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

将参数发送到UIViewController的最佳方法是什么?

我问这个问题,因为看起来viewDidLoad在初始化程序的主块之前被调用,而我在初始化程序中初始化的类变量在viewDidLoad中变为nil.作为参考,我正在以编程方式执行整个viewcontroller,并且我已经创建了一个自定义初始化程序,因此我可以接受在viewcontroller中使用的各种参数.我的自定义初始化程序当然调用UIViewControllers指定的初始化程序.

基本上,我很好奇将参数发送到UIViewController的正确设计模式是什么?我已经阅读了有关此问题的其他帖子,并没有真正得到明确的答案.我应该跳过初始化程序并手动设置属性(从类外部)?这看起来很简陋,我真的想发送一些参数,我很好奇别人怎么做这个?

iphone cocoa-touch design-patterns uiviewcontroller ios

0
推荐指数
1
解决办法
2427
查看次数

在objective-c中发送消息时可以进行强制转换?

我有:

[[[[self navigationItem] leftBarButtonItem] customView] setTitle:@" Create "];
Run Code Online (Sandbox Code Playgroud)

这触发了警告"'UIView'可能无法响应'-setTitle:'".我试过了:

[[[[self navigationItem] leftBarButtonItem] (UIButton*)customView] setTitle:@" Create "];
Run Code Online (Sandbox Code Playgroud)

当我这样做时会出错.0I也尝试使用(id)进行投射,但也没有用.我知道我可能只是将customView存储在UIButton中并从那里开始,但只是想知道是否可以在这样的消息中进行转换?

iphone cocoa-touch casting objective-c ios

0
推荐指数
1
解决办法
134
查看次数

如何以红色绘制UIImageView框架

我希望能够以UIImageView红色绘制边框,以便在旋转和缩放时可以看到它。不需要设置图层边框的宽度和颜色,因为如果旋转它,它也会旋转该图层(而UIImageView框架不会旋转)。这有可能吗?有人对此有任何线索吗?

cocoa-touch objective-c uiimageview ios

0
推荐指数
1
解决办法
96
查看次数

应用程序启动时读取属性列表的模式,在关闭时写入

当我的应用程序使用属性列表启动时,我需要读取数组中的一小部分数据.在应用程序运行时,此数据可能会根据用户的操作而发生变化.当应用程序关闭时,我需要将数据写回文件.

从高层次的角度来看,我只是想知道这样做的最佳设计模式是什么?我的第一个直觉是简单地声明一个数组,appDelegateappDelegate在需要时通过实例访问该数组.然后最后,他applicationWillResignActive:将数据写回文件的方法.

但是我被告知在appDelegate中声明一个这样的变量是个坏消息,所以我想知道是否有人可以告诉我实现这一目标的最佳方法是什么.

iphone cocoa-touch ios

0
推荐指数
1
解决办法
54
查看次数