2015-04-23 38 views
0

我在这里有2个问题。单元格上UI按钮的高度和宽度发生变化Click

1.) 在我的cellForRowAtIndexPath我添加了下面的代码。

[cell.comB addTarget:self action:@selector(comBClick:) forControlEvents:UIControlEventTouchUpInside]; 

当用户单击该单元格中的按钮时,会触发以下方法。但是,单击更改后UIbutton的位置。按钮滑倒了一下。我怎样才能防止这个?当我调试我注意到执行[((UIButton *)sender) setBackgroundImage:[UIImage imageNamed:@"m.png"] forState:UIControlStateSelected]; 行后按钮位置改变。

- (void) comBClick:(id) sender { 

    if(c%2==0) 

    { 

     [((UIButton *)sender) setBackgroundImage:[UIImage imageNamed:@"m.png"] forState:UIControlStateNormal]; 

    } else { 

     [((UIButton *)sender) setBackgroundImage:[UIImage imageNamed:@"n.png"] forState:UIControlStateNormal]; 

    } 

    c=c+1; 

} 

2.

我怎样才能找到width和一个UIButton的height

UPDATE

我有以下的自动版式警告,我相信这是对这个问题的原因。有人能告诉我什么是错的,以及如何解决它?

enter image description here

+0

甲'UIButton'是一个'UIView'。看看'bounds'或'frame'属性。 – rmaddy

+0

使用'sender.frame.size.width'和'sender.frame.size.height'来获得宽度和高度 –

+0

您是否验证了图像大小完全相同(如通过Finder中的检查器)?稍微不同大小的图像可以使它看起来好像视图的位置已经改变 –

回答

0

2)

这是最简单的方法:

float widht = ((UIButton *)sender).bounds.size.width; 
float height = ((UIButton *)sender).bounds.size.height 
+1

当我知道设置了视图层次并使用UI浏览器时,我喜欢放置一个断点。然后在实用程序窗格中将显示一些视图的信息 –

+0

使用'CGFloat'而不是'float'。 – rmaddy

相关问题