小编Dim*_*ris的帖子

检测特定的iPhone/iPod touch型号

可能重复:
使用iPhone SDK确定设备(iPhone,iPod Touch)

我正在制作一款利用iPhone的对等蓝牙功能的游戏(可能还有iPod touch第二代).但是,要阻止用户尝试在iPod 1st和iPhone 2G上播放多人游戏,我需要检查特定的设备型号.

[[UIDevice currentDevice] model]只会告诉我该设备是"iPhone"还是"iPod touch".有没有办法检查特定的设备型号,如:"iPhone 3GS","iPod touch第一代"或类似的东西.

编辑:

UIDevice有一个类别(我认为它是由Erica Sadun创建的,我不赞成它),它使用以下代码来获取特定的设备模型.你可以在这里找到整个类别以及其他有用的东西:https://github.com/erica/uidevice-extension

#include <sys/types.h>
#include <sys/sysctl.h>

@implementation UIDevice (Hardware)

/*
 Platforms
 iPhone1,1 -> iPhone 1G
 iPhone1,2 -> iPhone 3G 
 iPod1,1   -> iPod touch 1G 
 iPod2,1   -> iPod touch 2G 
*/

- (NSString *) platform
{
  size_t size;
  sysctlbyname("hw.machine", NULL, &size, NULL, 0);
  char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithCString:machine encoding:NSUTF8StringEncoding];
  free(machine);
  return platform;
}
Run Code Online (Sandbox Code Playgroud)

这项工作和使用它的应用程序最近已在AppStore中批准.

iphone p2p objective-c device ios

106
推荐指数
3
解决办法
9万
查看次数

iPhone UILabel文字软阴影

我知道iPhone上开箱即用的UILabel不支持柔和阴影.那么实现我自己的最佳方式是什么?

编辑:

显然我会UILabel继承并绘制-drawRect:我的问题是,我如何将标签的内容作为图形并在它们周围绘制,模糊它们等等......

编辑2:

一年后我回到了这个问题.与此同时,我构建了一个类,允许您轻松地向标签添加柔和阴影并调整其半径等,并在文本本身上绘制渐变.你可以在GitHub上找到它:https://github.com/doukasd/iOS-Components/tree/master/Views

iphone objective-c shadow uilabel iphone-sdk-3.0

59
推荐指数
7
解决办法
10万
查看次数

一个iOS应用程序中的多个Localizable.strings文件

是否可以在应用程序中拥有多个具有单独本地化的组件?

例如,我想在我的应用程序中本地化字符串,但也使用本地化的ShareKit(因此我的包将在不同位置包含2个Localizable.strings).所以,ShareKit包含像en.lproj和de.lproj这样的文件夹,它们包含Localizable.strings文件,我想为我的项目的其余部分创建相同的文件但是将它们分开.

我试过让它们分开,这导致我的应用程序的字符串没有被使用.有任何想法吗?

iphone cocoa-touch localization ios

38
推荐指数
1
解决办法
3万
查看次数

如何从shell脚本中读取plist信息(bundle id)

我想编写一个脚本,可以读取Bundle Identifier等信息,也可以从应用程序的Info.plist中读取版本号.Xcode似乎没有在其环境变量中提供该信息.还有其他办法让他们进入sh/bash吗?

iphone shell scripting xcode post-processing

25
推荐指数
3
解决办法
3万
查看次数

比较Objective-C中的浮点数的奇怪问题

在算法的某个时刻,我需要将类的属性的浮点值与浮点数进行比较.所以我这样做:

if (self.scroller.currentValue <= 0.1) {
}
Run Code Online (Sandbox Code Playgroud)

其中currentValue是一个浮动属性.

但是,当我具有相等性并且self.scroller.currentValue = 0.1if语句未满足且代码未执行时!我发现我可以通过将0.1转换为浮动来解决这个问题.像这样:

if (self.scroller.currentValue <= (float)0.1) {
}
Run Code Online (Sandbox Code Playgroud)

这很好用.

任何人都可以向我解释为什么会这样吗?默认情况下,0.1是否定义为double?

谢谢.

iphone floating-point casting objective-c

23
推荐指数
2
解决办法
3万
查看次数

适用于2D平台游戏的最佳iPhone框架

您建议为iPhone构建2D平台游戏的框架是什么?我只需要在屏幕上移动资源并检测碰撞等.

我会想OpenGL.但也许Quartz 2D就足够了?或者还有其他我应该注意的事情吗?每个的优点和缺点是什么?我想OpenGL有一个更长的学习曲线,但这会带来性能的回报,对吧?

iphone frameworks objective-c

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

正确缩放包含许多子视图的UIScrollView

我创建了一个可缩放的UIScrollView并为其添加了100个子视图(平铺).视图向左和向右滚动.但是,我想允许缩放.

为此,我读到我的代表需要实现:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return ???;
}
Run Code Online (Sandbox Code Playgroud)

我见过只有一个子视图可以缩放的例子,所以他们在那个方法中返回那个子视图.然而,就我而言,我还有更多.缩放的正确方法是什么?

我尝试创建另一个UIView并将100个子视图添加到那个.然后在上面的方法中返回一个视图,但是我不工作(它缩放但是一旦它停止,它就不再是交互式的).

iphone zoom objective-c uiscrollview

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

如何检查AngularJS中是否存在具有ID的元素

如何检查Angular指令中的DOM中是否已存在具有特定ID的元素?通过使用angular.element()一个元素创建如果不存在,例如angular.element('someID')一个人是否已经存在与否将返回一个元素.

我现在正在做的解决方法是使用这样的.html()jqLit​​e函数:

if(angular.element('#someElementID').html()){

console.log('仅在元素已存在的情况下触发');

}

有一个更好的方法吗?我想避免为此包含整个jQuery.

javascript angularjs jqlite

15
推荐指数
1
解决办法
3万
查看次数

在UIView(iPhone)中逐步绘制

据我所知,到目前为止,每次我在drawRect:UIView中绘制一些内容时,整个上下文都会被删除然后重新绘制.

所以我必须做这样的事情来绘制一系列点:

方法A:在每次通话时绘制所有内容

- (void)drawRect:(CGRect)rect { 

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextDrawImage(context, self.bounds, maskRef);      //draw the mask
    CGContextClipToMask(context, self.bounds, maskRef);     //respect alpha mask
    CGContextSetBlendMode(context, kCGBlendModeColorBurn);  //set blending mode

    for (Drop *drop in myPoints) {
        CGContextAddEllipseInRect(context, CGRectMake(drop.point.x - drop.size/2, drop.point.y - drop.size/2, drop.size, drop.size));
    }

    CGContextSetRGBFillColor(context, 0.5, 0.0, 0.0, 0.8);
    CGContextFillPath(context);
}
Run Code Online (Sandbox Code Playgroud)

这意味着,每次我想添加一个新的时候,我必须存储我所有的Dots(没关系),然后逐个重新绘制它们.不幸的是,这给了我糟糕的表现,我相信还有其他方法可以做到这一点,效率更高.

编辑:使用MrMage的代码,我做了以下,不幸的是,同样慢,颜色混合不起作用.我可以尝试其他任何方法吗?

方法B:保存UIImage中的先前绘制并仅绘制新内容和此图像

- (void)drawRect:(CGRect)rect
{
    //draw on top of the previous stuff
    UIGraphicsBeginImageContext(self.frame.size);
    CGContextRef ctx = UIGraphicsGetCurrentContext(); // ctx is now the image's context
    [cachedImage drawAtPoint:CGPointZero];
    if ([myPoints count] …
Run Code Online (Sandbox Code Playgroud)

iphone performance drawing objective-c uiview

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

模型更改后,擦除存储在CoreData中的所有数据

我有一个从互联网上获取数据的应用程序,并使用CoreData将它们存储在设备中,以获得更流畅的体验.

因为我使用Core Data,所以每当我的架构发生变化时,当我尝试使用存储在设备上的先前数据运行它时,应用程序会崩溃.什么是检测此更改并从设备中擦除所有数据的最快方法,因为我不介意重新加载它们.它击败了崩溃并将模式重新映射到新模式(在我的例子中).

我看到这个检查是在getter中执行的:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
Run Code Online (Sandbox Code Playgroud)

所以我只需要知道实施擦除整个数据库和重新设置核心数据的方法.谢谢 :)

iphone schema persistence core-data objective-c

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