如何在UIImageView的左上角和右下角创建UIButton

3
我希望在imageview的左上角和右下角创建删除按钮,但它看起来不像我需要的那样。 enter image description here 我希望两个按钮都应该放在红色边框的角落处。
为了创建按钮,我使用了以下代码。
   UIImageView * tappedView = (UIImageView *)[recognizer view];

[tappedView.layer setBorderColor: [[UIColor redColor] CGColor]];
[tappedView.layer setBorderWidth: 2.0];
tappedView.layer.cornerRadius = 10;
tappedView.layer.masksToBounds = NO;


UIButton *deleteBtn = [UIButton buttonWithType:UIButtonTypeCustom];
deleteBtn.frame = CGRectMake(0, 0, 20, 20);

[deleteBtn setImage:[UIImage imageNamed:@"close.png"]forState:UIControlStateNormal];

deleteBtn.layer.shadowColor = [[UIColor blackColor] CGColor];
deleteBtn.layer.shadowOffset = CGSizeMake(0,4);
deleteBtn.layer.shadowOpacity = 0.3;
[tappedView addSubview:deleteBtn];
[deleteBtn addTarget:self action:@selector(deleteProperties:) forControlEvents:UIControlEventTouchUpInside];



UIButton *zoomBtn = [UIButton buttonWithType:UIButtonTypeCustom];
zoomBtn.frame = CGRectMake(tappedView.frame.size.width, tappedView.frame.size.height, 20, 20);

[zoomBtn setImage:[UIImage imageNamed:@"close.png"]forState:UIControlStateNormal];

zoomBtn.layer.shadowColor = [[UIColor blackColor] CGColor];
zoomBtn.layer.shadowOffset = CGSizeMake(0,4);
zoomBtn.layer.shadowOpacity = 0.3;
[tappedView addSubview:zoomBtn];
[zoomBtn addTarget:self action:@selector(ZoomIn:) forControlEvents:UIControlEventTouchUpInside];

请指导我。

我想要像这样enter image description here

2个回答

2

只需玩弄按钮的框架即可:例如

deleteBtn.frame = CGRectMake(-5, -5, 20, 20);

并且

zoomBtn.frame = CGRectMake(tappedView.frame.size.width - 20, tappedView.frame.size.height - 20, 20, 20);

因为前两个数字是坐标x和y,而该框架相对于包含视图的框架。


是的,我已经尝试过了。如果我给出(-5,-5,20,20),它会放置在精确的位置,但按钮上会出现红色边框。 - thavasidurai
@thavasidurai,就像我说的那样,你只需要调整数字,直到看起来正确即可(我只是从图片中估算)。 - Brendt
@Spynet,这取决于你,我的朋友。 - Brendt

0
只需使用zoomBtn.center而不是zoomBtn.frame - 这样,您就不必考虑按钮的大小 - 它适用于任何大小的按钮。
// Create the button's frame - doesn't matter the x & y
CGRect btnFrame = CGRectMake(0.0f, 0.0f, 20.0f, 20.0f);

zoomBtn.frame = btnFrame;

// Set the zoomBtn center to the bottom right corner
zoomBtn.center = CGPointMake(tappedView.frame.size.width, tappedView.frame.size.height);

deleteBtn.frame = btnFrame;

// Set the deleteBtn center to the top left corner
deleteBtn.center = CGPointMake(0.0f, 0.0f);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接