我已经从数组中的照片库中获取了所有图像,然后在UIButtons上显示所有这些图像,并将它们放在滚动视图中以显示网格视图。现在,当用户单击按钮时,它应该看起来像他选择该图像为此,我拍了一个刻度标记图像并将其添加到UIImageView中,并在其点击按钮上添加了该图像视图。但是现在当用户再次单击相同按钮时,如果用户已经选择了多个图像,如何从按钮中删除该UIImageview。 这是我的代码
-(void)loadImagesOnScrollView
{
scrollView.contentSize=CGSizeMake(0, 55*[assets count]);
int x=0,y=0;
for (int i=0; i<[assets count]; i++) {
ALAsset *asset = [assets objectAtIndex:i];
UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom];
btn.frame=CGRectMake(x, y, 100, 100);
btn.tag=i;
[btn setImage:[UIImage imageWithCGImage:[asset thumbnail]] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnClkd:) forControlEvents:UIControlEventTouchUpInside];
if(i==0)
{
}
else if(i%2 ==0)
{
x=0;
y=y+110;
}
else
{
x=x+110;
}
[scrollView addSubview:btn];
}
}
-(void)btnClkd:(UIButton*)sender
{
if (sender.selected) {
sender.selected=FALSE;
}
else
{
sender.selected=TRUE;
}
if(sender.selected)
{
[sender addSubview:imgView];
}
else
{
}
}
沿着这个我还有一个问题,如何设置滚动视图的内容大小,以便可以使用任意数量的图像进行调整。
答案 0 :(得分:2)
在选择按钮上添加图像时,将其tag =常量(例如9999)+ sender.tag设置为。 现在再次点击按钮检查是否存在标记为9999 + sender.tag的子视图。如果是,请从superview
中删除该子视图答案 1 :(得分:1)
在.h文件中创建一个BOOL变量,例如:
BOOL isButtonClicked; // in .h file
然后在您的.m文件中
-(IBAction)onButtonClick:(UIButton *)checkBoxButton
{
if (!isButtonClicked) {
[checkBoxButton setImage:[UIImage imageNamed:@"tickMark.png"] forState:UIControlStateNormal];
isButtonClicked=YES;
}
else
{
[checkBoxButton setImage:[UIImage imageNamed:@"NormalImage.png"] forState:UIControlStateNormal];
isButtonClicked=NO;
}
}
答案 2 :(得分:0)
要检查UIImageView是否已添加到UIButton,请使用以下内容..
检查按钮是否有任何UIImage
if ( [button.currentImage isEqual:[NSNull null]]) {
NSLog(@"image exist");
}
或
用于检查按钮是否具有任何背景图像
if ( [button.currentBackgroundImage isEqual:[NSNull null]]) {
NSLog(@"background image exist");
}