小编Sto*_*ker的帖子

低alpha的视图 - 高alpha的子视图

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.我该怎么做呢?

alpha objective-c uiview ios

20
推荐指数
1
解决办法
8086
查看次数

UIGestureRecognizer知道它被调用的对象是什么?

我有一个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不支持同时附加到多个对象,那么,如果你知道为什么它不支持这个,你能教育我吗?谢谢您的帮助.

dynamic uigesturerecognizer ios

8
推荐指数
1
解决办法
8077
查看次数

UIViewController:[super init]调用[self initWithNibName bundle:]

我的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或类的手动实例化.

objective-c xib uiviewcontroller ios

5
推荐指数
2
解决办法
7872
查看次数

如何比较变量的值与#define

我做了以下#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以使编程器清楚自己?

c syntax objective-c

3
推荐指数
1
解决办法
1570
查看次数

Xcode中的条件编译

我想为我的代码的一部分"关闭"编译器.我不想使用注释来"隐藏"编译器中的代码,因为/*...*/本节中嵌入了大量注释.我猜想有一种常用的方法可以使用编译器指令或#defines或其他东西来控制编译.事实上,我希望抑制编译并不依赖于SDK或平台这样的条件,我只想将其关闭.如何实现这一目标?

iphone ipad ios

3
推荐指数
1
解决办法
4044
查看次数

使用模拟器的多个项目

我正在使用Xcode模拟器比较多个项目的运行.每次在运行其他项目之后我去构建一个项目时,Xcode告诉我它无法执行构建和运行,因为模拟器正在使用中.然后我必须找到另一个项目窗口,在模拟器中停止运行(Cmd-.),然后切换回上一个窗口并重建.我可以制作单个键盘快捷键来停止模拟器中的当前运行,在模拟器中构建和运行当前项目吗?

xcode xcode4 ios-simulator

1
推荐指数
1
解决办法
1863
查看次数