我正在尝试绘制一个水平无限大的图形,与屏幕的高度相同.我在其中添加了一个UIScrollView和一个UIView的子类,它实现了该-drawRect:
方法.在模拟器中,一切正常,但在设备上,它似乎无法在图形达到一定大小后绘制.
我已经尽可能地缓存了所有内容,并且基本上只在该-drawRect:
部分中调用CGContextAddLineToPoint .我只画出屏幕上可见的内容.我有一个UIScrollView的委托,它监听-scrollViewDidScroll:
,然后告诉图形重绘自己([graphView setNeedsDisplay]
).
我发现一个方法告诉我重写+layerClass
方法并返回[CATiledLayer class]
.这确实允许图形实际在设备上绘制,但它的功能非常差.实际绘制的速度非常慢,并且发生的淡入淡出是不可取的.
有什么建议?
我试图[[NSCalendar currentCalendar] ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit forDate:date]
在两个不同的日期使用,看看它们是否在同一天落下.但是,如果我的时区不同(例如,在德国的某个地方),即使日期明显相同,返回的日期也不同.如果我使用NSYearCalendarUnit
而不是NSEraCalendarUnit
在相同的日期,返回的值是相同的.
使用的唯一问题NSYearCalendarUnit
是它在不同年份的同一天返回相同的值,并且如果它们落在不同年份,则确定两个日期之间的天数并不简单.
任何想法有什么问题,或者如何更容易地确定两个日期是在同一天,还是确定它们之间的天数?
例:
[NSTimeZone setDefaultTimeZone:[NSTimeZone timeZoneWithName:@"Europe/Berlin"]];
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date1 = [NSDate dateWithTimeIntervalSinceReferenceDate:300751200];
NSDate *date2 = [NSDate dateWithTimeIntervalSinceReferenceDate:300836062.388569];
NSLog(@"\nDate 1: %@\nDate 2: %@",date1,date2);
/*Output:
Date 1: 2010-07-14 00:00:00 +0200
Date 2: 2010-07-14 23:34:22 +0200
*/
int day1 = [cal ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit
forDate:date1];
int day2 = [cal ordinalityOfUnit:NSDayCalendarUnit inUnit:NSEraCalendarUnit
forDate:date2];
NSLog(@"\nDay 1: %i\nDay 2: %i",day1,day2);
/*Output:
Day 1: 733966
Day 2: 733967
*/
day1 …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种简单的方法让用户将内容从iPhone下载到他们的计算机上.我见过其他应用程序实际上将iPhone变成了服务器,并为用户提供了一个IP地址,可以在他们的计算机上导航.我已经看了一些苹果样品,但没有什么看起来像我想要的那样.
那么,制作一个能够侦听TCP端口80(甚至更好的HTTP服务器)并发送响应的服务器的最简单方法是什么?希望使用Objective C类,但如果没有可用的东西,我可以创建一个包装器.
我设置了应用内购买,以便当用户点击"购买"按钮时,会出现"请稍候"视图,并将付款添加到付款队列中.这总是导致队列的观察者立即回调,说明交易进入"采购"状态.
我的问题发生在用户返回主屏幕,然后弹出确认购买对话框,然后取消.如果我在切换回应用程序之前在主屏幕上等待一段时间,应用程序永远不会获得有关事务切换状态或被删除的任何回调.如果我检查支付队列,我可以看到该交易仍然在队列中,仍然处于"采购"状态.在恢复应用程序后,有什么办法可以让它回调并从队列中删除它吗?
我有一个父类Container可能包含任何类型的Node,其中Node是父类特有的泛型类的子类,如下所示:
public class ContainerBase<NodeType, ObjectType>
where NodeType : NodeBase<ObjectType> where ObjectType : ObjectBase {
}
public abstract class NodeBase<T> where T : ObjectBase {
ContainerBase<NodeBase<T>, T> container;
public NodeBase(ContainerBase<NodeBase<T>, T> owner) {
container = owner;
}
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是创建具体的子类,以简化实现标准对象类型:
public class ContainerNormal : ContainerBase<NodeNormal, ObjectNormal> {
}
public class NodeNormal : NodeBase<ObjectNormal> {
//This doesn't work
public NodeNormal(ContainerNormal owner) : base(owner) { }
}
Run Code Online (Sandbox Code Playgroud)
我有点理解为什么对基础构造函数的调用不起作用.它试图将a转换为无效的ContainerNormal
a ContainerBase<NodeBase<ObjectNormal>, ObjectNormal>
.
那么我错过了哪些设计模式才能使这项工作正常进行?或者我只需要在ContainerBase<NodeBase<ObjectNormal>,ObjectNormal>
构造函数中接受一个,即使它可能不一定是一个ContainerNormal
对象?
我有一些相当复杂的规则来移动行中的行UITableView
.每个部分有不确定数量的部分和行,并且根据各种规则,行可以在用户的部分内或部分之间移动到特定的其他位置.
所有数据更新,一切正常.但偶尔,在移动一行之后,应用程序将退出并突然出现一个空白区域,应该显示一行.
我正在使用:
- (NSIndexPath *)tableView:(UITableView *)tableView
targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath
Run Code Online (Sandbox Code Playgroud)
指定允许用户根据单元格的位置拖动行的位置.98%的工作时间.但在某些情况下,当只允许用户在各部分之间拖动时(无法对部分内的行重新排序)会出现此错误,然后在没有行的区域上滚动浏览器后应用程序崩溃.
抛出的异常非常无用:
由于未捕获的异常'NSRangeException'而终止应用程序,原因:'*** - [NSCFArray objectAtIndex:]:index(6)超出边界(6)
我的代码都没有在堆栈中.最后一个特定于UITableView的方法是
-[UITableView(UITableViewInternal) _visibleCellForGlobalRow:]
有人看过这个问题之前发生过吗?有任何想法吗?
我不确定是否有这个名称,但基本上我需要做的是采用两个不透明的精灵,以50%的不透明度绘制它们,并且它们重叠的地方,不要让它看起来更暗.
示例图片http://i45.tinypic.com/n35281.gif
左边的图像是它最初渲染的方式.然后,我想减少渲染的alpha,默认情况下,我得到中间的图像,但我想得到右边的图像.
我正在iPhone上使用cocos2d,现在我正在使用Atlas Sprite Manager渲染精灵,它没有自己的alpha,所以我尝试通过单独减少每个精灵的alpha来降低alpha值.减少源图像的alpha值,这两者都不是我真正期望的.
是否有一些混合模式可以启用,或者某种(快速)方式将完全不透明的图像渲染到辅助缓冲区,然后在将缓冲区与主缓冲区混合之前降低缓冲区的不透明度?
我正在尝试Java中的泛型,并想到了这个例子.
如果我有ClassA<T>
,我可以用引用具体类的子类覆盖它,例如ClassB extends ClassA<String>
,然后ClassA使用T的任何地方,ClassB可以使用String.
现在,忽略了以前的ClassA
和ClassB
,如果我有一个抽象的ClassA
,它有一个通用的方法:
public <T> void doSomething(T data);
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以ClassB
用一个具体的类覆盖它,类似于前面的例子?我想出了一些有用的东西,即参数化类和方法,但我想知道是否有另一种方法.
class ClassA<T> {
public void doSomething(T data) {};
}
Run Code Online (Sandbox Code Playgroud)
我不想将参数放在类中的原因是因为它只有一个方法可以对该类型执行任何操作,而某些子类甚至可能不想在该方法中执行任何操作,因此我不需要放置如果它不打算使用它,则该类中的参数.
注意:所有子类ClassA
都是匿名类,因此增加了乐趣.
在Xcode中编辑plist文件时,它可以检测plist的类型并显示人类可读的字符串,以便更容易编辑文件.例如,Info.plist.
感谢这个问题,我找到了(或者)存储结构定义的地方,如InfoPlistStructDefs.xcodeplugin.但是,如果我把自己的文件放在那里,没有什么有趣的事情发生.也就是说,它不会显示在可能的属性列表类型列表中.
那么有谁知道如何使Xcode或外部属性列表编辑器应用程序识别自定义plist结构定义?
快速概述:我正在尝试使用Box2D作为基础进行游戏.现在我的问题:
我应该如何设置台球和边缘以使它们正常运作?球有时似乎没有明显的原因粘在边缘上.我有四个静态墙体对象,在桌子边缘有一个恢复原状.
每个球具有以下属性:
friction: 0.3
restitution: 0.3
density: 58.474822 (kg/m^2)
radius: 0.028575 (m)
Run Code Online (Sandbox Code Playgroud)
母球的密度为101.356358(kg /平方公尺)
当施加一个1.2千米/秒的提示脉冲时,球似乎以正常的水池球速度移动,并且大部分正确地从墙壁上反弹.然而,有时当球击中墙壁时它根本不会反弹,它只会停止,或者只是继续沿着墙壁行进.这看起来很奇怪,似乎不正确.有没有更好的方法来设置它?
cocoa-touch ×5
iphone ×5
generics ×2
objective-c ×2
2d ×1
box2d ×1
c# ×1
httpserver ×1
ios ×1
java ×1
macos ×1
opengl-es ×1
physics ×1
plist ×1
uitableview ×1
xcode ×1