小编fuz*_*oat的帖子

为UIButton设置titleLabel

我有点困惑,今天发现以下在尝试更改显示的文本时不起作用UIButton.

// 001
[[[self button] titleLabel] setText:@"Peanuts"];
Run Code Online (Sandbox Code Playgroud)

我想我知道为什么,但我只是想在这里证实我的想法.001确实设置了titleLabel文本属性,但作为其a UILabel(子视图UIButton),它不会导致重绘UI.这导致UILabel文本属性的内部更改,但遗憾的是UI中没有可视更改.

// 002
[[self button]setTitle:@"Peanuts" forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

似乎方法setTitle:forState是正确的方法,它有额外的开销需要一个状态但是会调用一个UI重绘,因为它直接被调用UIButton.我的问题是,002是正确的方法,这似乎是除非我做错了什么?

iphone objective-c uibutton uilabel

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

使用addAttribute修改整个NSMutableAttributedString:

我正在寻找一种方法,使句子中的第一个单词的颜色与句子其余部分的颜色不同.METHOD_001首先将整个字符串着色为白色,然后将前8个字符重新着色为红色.METHOD_002将前8个字符设置为红色,然后使用字符串长度计算剩余字符并将其着色为白色.

METHOD_001绝对是最好的,但我很好奇,如果有一个更简单的方法,我期望找到一个NSMutableAttributedString addAttribute:没有范围,只是将属性应用于整个字符串,似乎有点疏忽所有修改a NSMutableAttributedString要求你指定一个范围,我错过了什么吗?

注意: 代码包含硬编码值以帮助提高可读性.

// METHOD_001
NSMutableAttributedString *attrString_001 = [[NSMutableAttributedString alloc] initWithString:@"Distance 1720 mm" attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
[attrString_001 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 8)];
[[self nameLabel] setAttributedText:attrString_001];

// METHOD_002
NSString *string = @"Distance 1720 mm";
NSUInteger stringLength = [string length];
NSMutableAttributedString *attrString_002 = [[NSMutableAttributedString alloc] initWithString:string];
[attrString_002 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, 8)];
[attrString_002 addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(9, (stringLength-9))];
[[self distanceLabel] setAttributedText:attrString_002];
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch uicolor

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

限制Sprite Kit游戏到更新的手机?

我刚刚完成了在iPhone5/5S(1136*640)上开发和测试的SpriteKit游戏,游戏在两台设备上以60fps运行.我还写了一个支持iPhone4/4S(960*640)的版本,因为我在较慢的iPhone 4上进行了测试,但是这个版本在20fps时遇到困难,即使我正在预加载我的所有资产,也可能在初始加载时滞后/跳跃.

我目前的理解是我需要提交两个版本,但可以在描述中指定"此应用程序需要iPhone 5或更高版本".

我的问题是:我可以将应用程序限制在iPhone5/5S上,我当时认为可能有"必需的设备功能",例如"Requires_Advanced_Processor"或我可以设置的东西.在没有完全缩减版本的情况下,游戏能够在较旧的硬件上提供良好的体验,我只是意识到发布iPhone 4/4S版本可能会诱使一些人下载它并且有一个不太理想的体验,有什么在提交应用程序时,除了在我的描述中添加上述注释之外我可以做什么?

iphone frame-rate sprite-kit

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

int/float到NSString而不使用alloc?

无论如何在不使用alloc和后续版本的情况下将int(或float)数字转换为NSString对象?

int myInt = 25;
NSString *myString = [[NSString alloc] initWithFormat:@"%d",myInt];
... 
[myString release];
Run Code Online (Sandbox Code Playgroud)

编辑:

感谢您的回答,我应该在问题中更清楚一点,我特别感兴趣在iPhone上使用它.正如@chuck所说,我可以使用一种方便的方法,但我的印象是我应该尽可能避免这些因为内存/性能原因而在iPhone上使用.我可能错了.

加里

cocoa objective-c

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

使用点或括号语法设置属性有区别吗?

鉴于下面的属性声明,方法(A)的工作方式与方法(B)完全相同吗?我只想检查self.yellowViewController = yellcon_New;是通过我的setter进行的,以便释放旧对象并保留新对象.

// INTERFACE
@property(nonatomic, retain) YellowViewController *yellowViewController;

// IMPLEMENTATION (A)
self.yellowViewController = yellcon_New;

// IMPLEMENTATION (B)
[self setYellowViewController:yellcon_New];
Run Code Online (Sandbox Code Playgroud)

syntax objective-c declared-property

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

className方法?

我从2010年1月开始在线观看斯坦福iPhone的讲座,我注意到Apple的那个人一直指的是使用"className"获取对象类名,例如

NSArray *myArray = [NSArray arrayWithObjects:@"ONE", @"TWO", nil];
NSLog(@"I am an %@ and have %d items", [myArray className], [myArray count]);
Run Code Online (Sandbox Code Playgroud)

但是,我无法让这个工作,最接近我可以用它来使用类,className错了,它被删除了,只是好奇吗?

NSArray *myArray = [NSArray arrayWithObjects:@"ONE", @"TWO", nil];
NSLog(@"I am an %@ and have %d items", [myArray class], [myArray count]);
Run Code Online (Sandbox Code Playgroud)

加里

iphone cocoa-touch objective-c ios

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

分配,可变到不可变数组?

有人会这么好心以确认我正确理解了这一点。我对此的最初反应是 mutableArray 在分配给 immutableArray 时会变成 immutableArray,但事实并非如此。

这是因为初始数组被分配为一个 mutableArray 而 immutableArray 只是被分配为指向同一个对象。编译器发出警告,但代码在运行时执行得很好。

NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@"Teddy", @"Dog", nil];
NSArray *iArray = mArray;
[iArray addObject:@"Snoss"]; // Normally this would crash NSArray
Run Code Online (Sandbox Code Playgroud)

非常感激

加里。

iphone cocoa-touch objective-c

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

UITabBarItem 标题被 UIViewController 标题覆盖了?

我已经设置了一个带有两个独立 UIViewController 的 UITabBarController。在第二个 UIViewController 的初始化中,我设置了 UITabBarItem 以便它正确显示选项卡:

UITabBarItem *tabBar = [self tabBarItem];
[tabBar setTitle:@"DATA"];
[tabBar setImage:[UIImage imageNamed:@"DATA.png"]];
Run Code Online (Sandbox Code Playgroud)

这工作正常,选项卡显示标题“数据”并显示正确的图标图像。在 loadView 内的同一个控制器中,我正在设置 UIViewController 标题:

[self setTitle:@"Data Table"];
Run Code Online (Sandbox Code Playgroud)

我的问题是当我运行应用程序时,我的第二个选项卡读取“DATA”但是当我单击选项卡并调用 loadView 时(我在那里有一个 UITableView)并且我将 UNViewControllers 标题属性设置为“数据表”我的第二个选项卡更改为读取“数据表”。有没有办法解决/避免这种情况?

iphone cocoa-touch objective-c

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

将iOS应用程序升级到新的操作系统?

我有点好奇在以下情况下会发生什么.您在使用iOS4的iTunes商店(有客户)上有现有的应用程序,然后您发布使用较新iOS的应用程序的更新.

  • 升级到"新iOS"的人将获得更新.
  • 那些没有更新的人会发生什么,他们仍然可以使用旧的iOS4版本吗?

iphone cocoa-touch objective-c

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

从月份名称获取月份数?

快速问题,我有一个月份的名单,即"Jan""Feb""Mar""Apr"......等我想转换成1,2,3,4 ...等我写的一些简单的代码可以做到这一点,但只是好奇,如果有人知道使用任何API这样做的方法.

iphone cocoa-touch objective-c

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