首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将UIButton图像更改为另一个objective C

将UIButton图像更改为另一个objective C
EN

Stack Overflow用户
提问于 2012-06-19 05:40:46
回答 2查看 260关注 0票数 0

当用户按下我的UIButton上的图像时,我想要更改它。图像具有透明效果(它是仅显示边缘的.png )。问题是,当点击按钮时,一切正常(连接到它的其他功能),但应用程序覆盖了两个不同的图像一个在第二个!当按钮被按下时,我想要显示第二个图像,并删除第一个(这变得不必要了)。PS:我不想使用图像数组。下面是按钮的代码:

代码语言:javascript
运行
复制
UIButton *overlayButton = [UIButton buttonWithType:UIButtonTypeCustom];
[overlayButton setImage:[UIImage imageNamed:@"image1.png"] forState:UIControlStateNormal];
[overlayButton setFrame:CGRectMake(20, 382, 120, 60)];
[overlayButton addTarget:self action:@selector(scanButtonPressed) forControlEvents:UIControlEventTouchUpInside]; //just graphics
[overlayButton addTarget:self action:@selector(buttonshapeClicked:) forControlEvents:UIControlEventTouchUpInside]; //just to set a variable i++ for my cycle
[overlayButton addTarget:self action:@selector(changeshape:) forControlEvents:UIControlEventTouchUpInside];  //function that changes another shape
[[self view] addSubview:overlayButton];    

我的简单循环

代码语言:javascript
运行
复制
- (void)buttonshapeClicked:(id)sender{
shape++;
if (shape == 4) {
    shape = 1;
        }}     

这里的main函数允许更改屏幕上的主要形状。

代码语言:javascript
运行
复制
 -(void) changeshape:(id)sender {
if (shape==1 && people==2) {
    //bottone forma
    UIButton *overlayButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [overlayButton setImage:[UIImage imageNamed:@"passaquadrato.png"] forState:UIControlStateNormal];
    [overlayButton setFrame:CGRectMake(20, 382, 120, 60)];
    [overlayButton addTarget:self action:@selector(scanButtonPressed) forControlEvents:UIControlEventTouchUpInside];
    [overlayButton addTarget:self action:@selector(buttonshapeClicked:) forControlEvents:UIControlEventTouchUpInside];
    [overlayButton addTarget:self action:@selector(changeshape:) forControlEvents:UIControlEventTouchUpInside];
    [[self view] addSubview:overlayButton];

    //bottone people
    UIButton *overlayButtonp = [UIButton buttonWithType:UIButtonTypeCustom];
    [overlayButtonp setImage:[UIImage imageNamed:@"passatre.png"] forState:UIControlStateNormal];
    [overlayButtonp setFrame:CGRectMake(180, 382, 120, 60)];
    [overlayButtonp addTarget:self action:@selector(scanButtonPressed) forControlEvents:UIControlEventTouchUpInside];
    [[self view] addSubview:overlayButtonp];

    UIImageView *overlayImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"circle2.png"]];
    [overlayImageView setFrame:CGRectMake(20, 88, 280, 280)];
    [[self view] addSubview:overlayImageView];
}


else if (shape==2 && people==2) {
    //bottone forma
    UIButton *overlayButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [overlayButton setImage:[UIImage imageNamed:@"passarettangolo.png"] forState:UIControlStateNormal];
    [overlayButton setFrame:CGRectMake(20, 382, 120, 60)];
    [overlayButton addTarget:self action:@selector(scanButtonPressed) forControlEvents:UIControlEventTouchUpInside];
    [overlayButton addTarget:self action:@selector(buttonshapeClicked:) forControlEvents:UIControlEventTouchUpInside];
    [overlayButton addTarget:self action:@selector(changeshape:) forControlEvents:UIControlEventTouchUpInside];
    [[self view] addSubview:overlayButton];

    //bottone people
    UIButton *overlayButtonp = [UIButton buttonWithType:UIButtonTypeCustom];
    [overlayButtonp setImage:[UIImage imageNamed:@"passatre.png"] forState:UIControlStateNormal];
    [overlayButtonp setFrame:CGRectMake(180, 382, 120, 60)];
    [overlayButtonp addTarget:self action:@selector(scanButtonPressed) forControlEvents:UIControlEventTouchUpInside];
    [[self view] addSubview:overlayButtonp];

    UIImageView *overlayImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"square2.png"]];
    [overlayImageView setFrame:CGRectMake(20, 88, 280, 280)];
    [[self view] addSubview:overlayImageView];
}}

我希望有相同的按钮,但要显示不同的图像

EN

回答 2

Stack Overflow用户

发布于 2012-06-19 05:57:46

看起来你永远不会移除以前的按钮。

此外,您不必创建新按钮-您可以简单地存储对按钮的引用、更改图像和更改操作目标(通过在添加新按钮之前删除旧按钮)。

票数 1
EN

Stack Overflow用户

发布于 2012-06-19 15:38:23

我已经解决了几个周期,用以下命令从视图中删除所有内容:

代码语言:javascript
运行
复制
for (int i = 0; i < [[self.view subviews] count]; i++ ) {
        [[[self.view subviews] objectAtIndex:i] removeFromSuperview];
    }

现在的问题是重新初始化循环,因为当我的变量变为4时,我希望它变成1。我这样做:

代码语言:javascript
运行
复制
- (void)buttonshapeClicked:(id)sender{shape++;
if (shape == 4) {
    shape = 1;
}}

但是在数字4之后,我遇到了和以前一样的总览问题!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11091505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档