我正在制作一款利用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上开箱即用的UILabel不支持柔和阴影.那么实现我自己的最佳方式是什么?
编辑:
显然我会UILabel继承并绘制-drawRect:我的问题是,我如何将标签的内容作为图形并在它们周围绘制,模糊它们等等......
编辑2:
一年后我回到了这个问题.与此同时,我构建了一个类,允许您轻松地向标签添加柔和阴影并调整其半径等,并在文本本身上绘制渐变.你可以在GitHub上找到它:https://github.com/doukasd/iOS-Components/tree/master/Views
是否可以在应用程序中拥有多个具有单独本地化的组件?
例如,我想在我的应用程序中本地化字符串,但也使用本地化的ShareKit(因此我的包将在不同位置包含2个Localizable.strings).所以,ShareKit包含像en.lproj和de.lproj这样的文件夹,它们包含Localizable.strings文件,我想为我的项目的其余部分创建相同的文件但是将它们分开.
我试过让它们分开,这导致我的应用程序的字符串没有被使用.有任何想法吗?
我想编写一个脚本,可以读取Bundle Identifier等信息,也可以从应用程序的Info.plist中读取版本号.Xcode似乎没有在其环境变量中提供该信息.还有其他办法让他们进入sh/bash吗?
在算法的某个时刻,我需要将类的属性的浮点值与浮点数进行比较.所以我这样做:
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构建2D平台游戏的框架是什么?我只需要在屏幕上移动资源并检测碰撞等.
我会想OpenGL.但也许Quartz 2D就足够了?或者还有其他我应该注意的事情吗?每个的优点和缺点是什么?我想OpenGL有一个更长的学习曲线,但这会带来性能的回报,对吧?
我创建了一个可缩放的UIScrollView并为其添加了100个子视图(平铺).视图向左和向右滚动.但是,我想允许缩放.
为此,我读到我的代表需要实现:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return ???;
}
Run Code Online (Sandbox Code Playgroud)
我见过只有一个子视图可以缩放的例子,所以他们在那个方法中返回那个子视图.然而,就我而言,我还有更多.缩放的正确方法是什么?
我尝试创建另一个UIView并将100个子视图添加到那个.然后在上面的方法中返回一个视图,但是我不工作(它缩放但是一旦它停止,它就不再是交互式的).
如何检查Angular指令中的DOM中是否已存在具有特定ID的元素?通过使用angular.element()一个元素创建如果不存在,例如angular.element('someID')一个人是否已经存在与否将返回一个元素.
我现在正在做的解决方法是使用这样的.html()jqLite函数:
if(angular.element('#someElementID').html()){
console.log('仅在元素已存在的情况下触发');
}
有一个更好的方法吗?我想避免为此包含整个jQuery.
据我所知,到目前为止,每次我在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) 我有一个从互联网上获取数据的应用程序,并使用CoreData将它们存储在设备中,以获得更流畅的体验.
因为我使用Core Data,所以每当我的架构发生变化时,当我尝试使用存储在设备上的先前数据运行它时,应用程序会崩溃.什么是检测此更改并从设备中擦除所有数据的最快方法,因为我不介意重新加载它们.它击败了崩溃并将模式重新映射到新模式(在我的例子中).
我看到这个检查是在getter中执行的:
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
Run Code Online (Sandbox Code Playgroud)
所以我只需要知道实施擦除整个数据库和重新设置核心数据的方法.谢谢 :)
iphone ×9
objective-c ×7
ios ×2
angularjs ×1
casting ×1
cocoa-touch ×1
core-data ×1
device ×1
drawing ×1
frameworks ×1
javascript ×1
jqlite ×1
localization ×1
p2p ×1
performance ×1
persistence ×1
schema ×1
scripting ×1
shadow ×1
shell ×1
uilabel ×1
uiscrollview ×1
uiview ×1
xcode ×1
zoom ×1