我UIView的alpha值为.5我添加了一个alpha值为1的子视图.
子视图似乎继承了父级的alpha值.有没有办法让子视图比其父视图更不透明?
代码看起来像这样:
CGRect promptFrame = CGRectMake(55, 80, 180, 50);
UIView *inputPrompt = [[UIView alloc] initWithFrame: promptFrame];
[inputPrompt setBackgroundColor: [UIColor darkGrayColor]];
[inputPrompt setAlpha: .5];
inputPrompt.layer.cornerRadius = 8;
inputPrompt.layer.masksToBounds = YES;
CGRect fileTextFieldFrame = CGRectMake(10, 15, 150, 25);
UITextField *filePrompt = [[UITextField alloc] initWithFrame: fileTextFieldFrame];
[filePrompt setBorderStyle:UITextBorderStyleRoundedRect];
[filePrompt setClearButtonMode:UITextFieldViewModeWhileEditing];
[filePrompt setBackgroundColor: [UIColor whiteColor]];
[filePrompt setAlpha: 1];
Run Code Online (Sandbox Code Playgroud)
结果如下:

我希望能够看到灰色下方的按钮,UIView但不能看到白色下面的按钮UITextField.我该怎么做呢?
我有一个UIGestureRecognizer,我想在两个不同的UIView上工作,这两个UIView都在UiViewController的相同视图层次结构中.UIGestureRecognizer的操作在每个上都是一样的,所以我希望调用相同的函数(很明显),我将在运行时告诉我正在处理哪些UIViews.但是怎么样?我看不出UIGestureRecognizer正在携带对象信息.我是否遗漏了文档中的这一行,或者gestureRecognizer不知道它被调用的对象是哪个对象?似乎语言的意义在于它会知道.
或者,也许我误解了班级的意图,我不应该:
UITapGestureRecognizer *dblTap =
[[UITapGestureRecognizer alloc] initWithTarget: self
action: @selector(handleDblTap:)];
[viewA addGestureRecognizer: dblTap];
[viewB addGestureRecognizer: dblTap];
Run Code Online (Sandbox Code Playgroud)
然后期望能够:
-(void)handleDblTap: (UIGestureRecognizer *)gestureRecognizer
{
if (viewA)...
Run Code Online (Sandbox Code Playgroud)
如果事实上UIGestureRecognizer不支持同时附加到多个对象,那么,如果你知道为什么它不支持这个,你能教育我吗?谢谢您的帮助.
我的UIViewController子类中有两个init函数:
- (id)init
{
self = [super init];
if (self)
{
// Custom stuff
return self;
}
return nil;
}
Run Code Online (Sandbox Code Playgroud)
和
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName: nibNameOrNil
bundle: nibBundleOrNil];
if (self)
{
// Custom stuff
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
我将init函数放入以避免调用initWithNibName:bundle:方法.我试图尝试取出xib文件.不幸的是,调用这个init [[Myclass alloc] init]调用initWithNibName:bundle:通过调用[super init].
首先,我应该在文档中的哪个位置读取,以便我希望调用父init方法来调用我自己的initWithNibName:bundle:方法?
其次,这对Apple来说是一个很好的设计选择.我不明白为什么这是可取的行为?(这可能是因为我没有在这里得到大图,所以请随时告诉我.)
第三,我如何最好地解决它.我只是从我的代码中取出initWithNibName:bundle:从来没有一种情况我希望选择使用xib或类的手动实例化.
我做了以下#defines
#define GOLD 1;
#define SILVER 2;
Run Code Online (Sandbox Code Playgroud)
后来在我的程序中我设置了一些变量
int source, target;
Run Code Online (Sandbox Code Playgroud)
然后将它们设置为值:
source = GOLD;
target = SILVER;
Run Code Online (Sandbox Code Playgroud)
我现在想在if语句中进行比较:
if(source == GOLD) {...}
Run Code Online (Sandbox Code Playgroud)
但编译器在''之前抱怨'''''' 令牌.如果我将行更改为
if(source == 1) {...}
Run Code Online (Sandbox Code Playgroud)
编译器或行为没有问题.如何在if语句中引用#define以使编程器清楚自己?
我想为我的代码的一部分"关闭"编译器.我不想使用注释来"隐藏"编译器中的代码,因为/*...*/本节中嵌入了大量注释.我猜想有一种常用的方法可以使用编译器指令或#defines或其他东西来控制编译.事实上,我希望抑制编译并不依赖于SDK或平台这样的条件,我只想将其关闭.如何实现这一目标?
我正在使用Xcode模拟器比较多个项目的运行.每次在运行其他项目之后我去构建一个项目时,Xcode告诉我它无法执行构建和运行,因为模拟器正在使用中.然后我必须找到另一个项目窗口,在模拟器中停止运行(Cmd-.),然后切换回上一个窗口并重建.我可以制作单个键盘快捷键来停止模拟器中的当前运行,在模拟器中构建和运行当前项目吗?