到目前为止,我已经查看了每个问题,似乎没有人真正回答这个问题.
我创建了一个UITabBarController并为其添加了几个视图控制器.大多数观点都是纵向观看的,但应该以横向观看.我不想使用加速度计或检测用户旋转设备的时间,我只想在横向模式中从底部的选项卡中选择该视图时以横向模式显示视图.
我希望定期动画发生,例如标签丢失,视图旋转等,当他们选择该项目时,以及当他们选择不同的视图时发生相反的情况.
是否没有内置属性或方法来告诉系统显示视图的方向是什么?
覆盖shouldautorotate ...方法到目前为止我无法做到.
我不会欣赏的答案类型是"RTFM",因为我已经拥有,而且迄今为止为iPhone开发的任何人都知道,对于F-ing R来说,很少有用.
这看起来很简单:我想在SQLite表中复制一行:
INSERT INTO table SELECT * FROM table WHERE rowId=5;
Run Code Online (Sandbox Code Playgroud)
如果没有明确的唯一列声明,则该语句将起作用,但声明了表的第一列rowID INTEGER NOT NULL PRIMARY KEY
.是否有任何方法可以创建一个简单的语句,如上所述,在不知道表的模式的情况下工作(除了第一列)?
场景:
我有一套CGPath
s.它们大多只是线条(即不是封闭的形状).它们以绘图方式绘制在屏幕上UIView
.
如何检查用户是否在其中一条路径附近轻敲?
这就是我的工作:
UIGraphincsBeginImageContext(CGPathGetBoundingBox(path));
CGContextRef g = UIGraphicsGetCurrentContext();
CGContextAddPath(g,path);
CGContextSetLineWidth(g,15);
CGContextReplacePathWithStrokedPath(g);
CGPath clickArea = CGContextCopyPath(g); //Not documented
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)
所以我正在做的是创建一个图像上下文,因为它具有我需要的功能.然后我将路径添加到上下文中,并将行宽设置为15.此时描绘路径将创建我可以在其中检查以查找点击的点击区域.所以我通过告诉上下文将路径转换为描边路径,然后将该路径复制回另一个CGPath来获得该描述路径.之后,我可以查看:
if (CGPathContainsPoint(clickArea,NULL,point,NO)) { ...
Run Code Online (Sandbox Code Playgroud)
这一切都运作得很好,但是CGContextCopyPath
,由于显而易见的原因,使用无证,似乎是一个坏主意.关于CGContext
为此目的而做一个公正,也有一定的愚蠢.
那么,有没有人有任何想法?如何检查用户是否在任何区域附近(在这种情况下,在15个像素内)轻敲CGPath
?
我正在使用SQLite,我有一个属性表和一个子属性表.每个子属性使用fkPropertyId列指向其父级.现在,要创建初始数据库,我有一个看起来像这样的脚本:
INSERT INTO property VALUES(1,.....);
INSERT INTO property VALUES(2,.....);
INSERT INTO property VALUES(3,.....);
INSERT INTO subproperty VALUES(1,.....,3);
INSERT INTO subproperty VALUES(2,.....,3);
INSERT INTO subproperty VALUES(3,.....,3);
INSERT INTO property VALUES(4,.....);
Run Code Online (Sandbox Code Playgroud)
现在,我想摆脱硬编码的rowId,所以它会是这样的:
INSERT INTO property VALUES(NULL,.....);
INSERT INTO property VALUES(NULL,.....);
INSERT INTO property VALUES(NULL,.....);
INSERT INTO subproperty VALUES(NULL,.....,X);
INSERT INTO subproperty VALUES(NULL,.....,X);
INSERT INTO subproperty VALUES(NULL,.....,X);
INSERT INTO property VALUES(NULL,.....);
Run Code Online (Sandbox Code Playgroud)
其中x指的是属性表中最后插入的rowId.现在,那是
(SELECT MAX(rowId) FROM property)
Run Code Online (Sandbox Code Playgroud)
是否有更好(更技术准确)的方式来编写这个脚本?
我已经子类化了UIActionSheet
,在-init
方法中,我必须在调用super之后单独添加按钮init
(不能传递var_args).
现在,它看起来像这样:
if (self = [super initWithTitle:title delegate:self cancelButtonTitle:cancel destructiveButtonTile:destroy otherButtonTitles:firstButton,nil]) {
if (firstButton) {
id buttonTitle;
va_list argList;
va_start(argList, firstButtton);
while (buttonTitle = va_arg(argList, id)) {
[self addButtonWithTitle:buttonTitle]
}
va_end(argList);
}
}
return self;
Run Code Online (Sandbox Code Playgroud)
但是,我在这种情况下的具体用途没有破坏性按钮,取消按钮和其他四个按钮.当它出现时,订单全部关闭,显示为
Button1
取消
Button2
Button3
就像他们被简单地添加到列表的末尾,这是有道理的; 但是,我不希望它看起来像这样; 那我该怎么办?事实上,是否有任何方法可以UIActionSheet
正确地进行子类化并使其工作?
我有一个PDF文件,我想以大纲形式绘制.我想在他们自己的UIImage中绘制文档中的前几页,以便在按钮上使用,这样当单击时,主显示将导航到单击的页面.
但是,CGContextDrawPDFPage在尝试绘制页面时似乎使用了大量内存.尽管图像应该只有100px左右,但应用程序崩溃时特别是绘制一个页面,根据Instruments,它只为一页分配大约13 MB的内存.
这是绘图的代码:
//Note: This is always called in a background thread, but the autorelease pool is setup elsewhere
+ (void) drawPage:(CGPDFPageRef)m_page inRect:(CGRect)rect inContext:(CGContextRef) g {
CGPDFBox box = kCGPDFMediaBox;
CGAffineTransform t = CGPDFPageGetDrawingTransform(m_page, box, rect, 0,YES);
CGRect pageRect = CGPDFPageGetBoxRect(m_page, box);
//Start the drawing
CGContextSaveGState(g);
//Clip to our bounding box
CGContextClipToRect(g, pageRect);
//Now we have to flip the origin to top-left instead of bottom left
//First: flip y-axix
CGContextScaleCTM(g, 1, -1);
//Second: move origin
CGContextTranslateCTM(g, 0, -rect.size.height);
//Now …
Run Code Online (Sandbox Code Playgroud) 我很好奇内部保留/释放的工作方式.在脸上,好像有涉及到的每个实例的整数NSObject
,这被增加,当你调用下降-retain
和-release
分别.
但是看看NSObject
,它所拥有的唯一实例变量是isa
变量,用于确定其类类型.
那么存储单个对象的保留计数在哪里?并不是说我会用它来捣乱,而只是为了我自己的启发.
它是存储在一起NSObject
,但隐藏在一些Objective C实现细节中?如果是这样,那对我来说似乎是一个糟糕的设计.一个应该能够创建他们自己的根类和处理自己的保留/释放以类似的方式计算(不,这是一个好主意-人们必须有一个非常好的理由不使用NSObject
).
我正在尝试为iPhone应用程序创建一个通用错误处理程序,只要在应用程序中抛出任何常规错误而不在应用程序中的每个方法周围放置try/catch块,就会将用户带到恢复屏幕.
使用NSSetUncaughtExceptionHandler
不起作用,因为应用程序在运行处理程序后终止.
有没有办法改变这种行为,或者使用任何其他一般会捕获异常的处理程序而不会导致应用程序在之后退出?
并且,请不要回答这是一个好主意还是坏主意.
我有一个Util包,包含三个单独目录中的源文件,定义如下:
该包使用第一组文件和第二组或第三组之一构建,以创建相同接口的总共两个不同实现.
现在,我想基于这些文件生成javadoc.我该如何指定?我真正想做的是
javadoc com.domain.util -sourcepath ./src;./src/Standard
为标准的util包构建javadoc,以及
javadoc com.domain.util -sourcepath ./src;./src/Extended
为扩展的util包构建javadoc.这不起作用.到目前为止,我发现实际工作的唯一方法是将公共类和标准类的目录结构合并到另一个位置,并使用标准javadoc运行,然后对扩展包执行相同操作.还有另外一种方法吗?
我有一个SaveFileDialog,可以选择使用.foo或.bar类型保存.列表中的第一个项目(默认情况下已选中)为.foo.默认文件名为"无标题",默认扩展名为".foo".出现SaveFileDialog时,它会在文件名文本框中添加"无标题".我可以将其更改为"untitled.foo",但它仍然不会改变我的问题的行为:
如果用户切换到.bar,如何将文件名更改为untitled.bar?只有两个事件,这两个事件都不是我想要的事件,而且似乎并没有改变自己.
iphone ×5
cocoa-touch ×3
objective-c ×2
sqlite ×2
.net-2.0 ×1
c# ×1
java ×1
javadoc ×1
pdf ×1
relational ×1
rotation ×1
sql ×1
windows-xp ×1