在时钟应用程序,计时器屏幕显示了一个选择器(可能是一个UIPicker在UIDatePickerModeCountDownTimer模式),在选择栏一些文本("小时",并在这种情况下,"分钟").
(编辑)请注意,这些标签是固定的:当拣选轮滚动时,它们不会移动.
有没有办法在标准UIPickerView组件的选择栏中显示这样的固定标签?
我没有找到任何有助于此的API.建议是添加一个UILabel作为选择器的子视图,但这不起作用.
回答
我按照Ed Marty的建议(下面回答),它的确有效!不完美,但它应该骗人.作为参考,这是我的实现,随意让它变得更好......
- (void)viewDidLoad {
// Add pickerView
self.pickerView = [[UIPickerView alloc] initWithFrame:CGRectZero];
[pickerView release];
CGSize pickerSize = [pickerView sizeThatFits:CGSizeZero];
CGRect screenRect = [[UIScreen mainScreen] applicationFrame];
#define toolbarHeight 40.0
CGFloat pickerTop = screenRect.size.height - toolbarHeight - pickerSize.height;
CGRect pickerRect = CGRectMake(0.0, pickerTop, pickerSize.width, pickerSize.height);
pickerView.frame = pickerRect;
// Add label on top of pickerView
CGFloat top = pickerTop + 2;
CGFloat height = pickerSize.height - …Run Code Online (Sandbox Code Playgroud) 当一个方法virtual在类中声明时,它的派生类中的覆盖也会被自动考虑virtual,并且C++语言virtual在这种情况下使该关键字成为可选:
class Base {
virtual void f();
};
class Derived : public Base {
void f(); // 'virtual' is optional but implied.
};
Run Code Online (Sandbox Code Playgroud)
我的问题是:选择的理由是什么virtual?
我知道编译器并不是绝对必要的,但我认为如果编译器强制执行这样的约束,开发人员将会受益.
例如,有时当我阅读其他人的代码时,我想知道一个方法是否是虚拟的,我必须追踪它的超类来确定它.而一些编码标准(谷歌)使得将virtual关键字放在所有子类中是"必须的" .
我们需要一些C++代码来创建一个make文件.每个.h和.C对创建一个对象,然后一些对象链接在一起形成一个可执行文件.很标准的东西.
这个非gnu make命令只是将所有文件构建到目录中的对象中
%.o:%.C
$(CC) $(CPFLAGS) -c $<
Run Code Online (Sandbox Code Playgroud)
这样做是为每个%.C文件(即每个.C文件)构建一个相应的.o文件.
有人知道如何使用gmake吗?
干杯
标记
当前(截至2008年12月)iPhone SDK允许我在构建应用程序时选择3个版本:2.0,2.1,2.2. - 我会忽略下面的2.1.
我的假设:
我认为使用可以构建应用程序的最早版本是最好的,这样它将在运行旧操作系统的iPhone上运行.
但如果我用2.0构建它,我的应用程序是否会有丢失的风险?也许一些速度或更好的UI元素.但也许2.0和2.2之间没有太大的区别,甚至担心它?
所以我的问题是:我应该选择哪种SDK?
(如果答案很明显,为什么我有选择?!)
在最近的嵌入式项目中,我们使用了以下svn结构:
project
branches
tags
trunk
electronics
software
branches
tags
trunk
Run Code Online (Sandbox Code Playgroud)
如您所见,软件部分有一个嵌套的branches/tags/trunk目录.这对软件开发者来说非常实用,因为他们可以在那里工作而不用担心其余的问题.
然而,它看起来并不合适,因为分支的多层次可能会让人感到困惑,而在层次结构中工作较高的人可能会因为他们检查顶部主干而必须下载所有垃圾而感到不便...
所以我想为下一个项目寻找一个仅限1个主干的存储库,如果开发人员不想要非软件的东西,他们可以只签出project/trunk/software并分支到project/branches/br-1234/software等等.
您如何看待嵌套中继线?优点和缺点请!
作为一个附带问题:分支/标签是否应该是主干(或其他分支)的副本,或者是否可以建立主干子目录的分支?
我试图了解潜在的情况以及它是否可能是一个问题.
所以我有一个当前线程安全的静态函数.功能如下:
static thread_safe_func()
{
... process
}
Run Code Online (Sandbox Code Playgroud)
现在在这个函数中,我添加以下内容:
static thread_safe_func()
{
static const Class::NonThreadSafeClassName() *array[16] = {
Class::NonThreadSafeClassName(),
Class::NonThreadSafeClassName(),
Class::NonThreadSafeClassName(),
Class::NonThreadSafeClassName(),
Class::NonThreadSafeClassName(),
Class::NonThreadSafeClassName(),
Class::NonThreadSafeClassName(),
}
... code continues here
}
Run Code Online (Sandbox Code Playgroud)
现在它本身是线程安全的吗?数组将在应用程序的整个生命周期内初始化一次,因此一旦函数thread_safe_func()被调用并完全运行,我希望这是线程安全的.
问题显然是在第一次调用期间可能发生的情况,在线程调用thread_safe_func()的情况下会发生什么,const数组的初始化发生,但在初始化完成之前,另一个线程正在调用thread_safe_func().
会改为:
static ClassMutex lock = ClassMutex()
static thread_safe_func()
{
lock.Lock()
static const Class::NonThreadSafeClassName() *array[16] = {
Class::NonThreadSafeClassName(),
Class::NonThreadSafeClassName(),
Class::NonThreadSafeClassName(),
Class::NonThreadSafeClassName(),
Class::NonThreadSafeClassName(),
Class::NonThreadSafeClassName(),
Class::NonThreadSafeClassName(),
}
lock.Unlock()
... code continues here
}
Run Code Online (Sandbox Code Playgroud)
是否值得并保证此代码现在是线程安全的?
c++ ×2
iphone ×2
cocoa-touch ×1
gnu-make ×1
makefile ×1
svn ×1
uipickerview ×1
virtual ×1
xcode ×1