【问题标题】:How to create UIButton in UIImageView's top left corner and bottom right corner如何在 UIImageView 的左上角和右下角创建 UIButton
【发布时间】:2012-09-13 13:55:19
【问题描述】:

我希望在 imageview 的左上角和右下角创建删除按钮。但它看起来不像我需要的。

我希望两个按钮都放在红色边框

的角落

为了创建按钮,我使用了下面的代码

   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];

请指导我。

我想要这样

【问题讨论】:

    标签: ios uiimageview uibutton rounded-corners cornerradius


    【解决方案1】:

    只需使用 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);
    

    【讨论】:

      【解决方案2】:

      只是玩弄按钮的框架:例如

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

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

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

      【讨论】:

      • 是的。如果我将 (-5,-5,20,20) 放置在确切位置但按钮上出现红色边框,我已经尝试过。
      • @thavasidurai 正如我所说,您只需要玩弄这些数字,直到看起来正确(我只是根据图像进行估计)
      • @Spynet 由你决定,如果你删除它我的朋友
      猜你喜欢
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 2021-08-21
      • 2012-12-21
      • 1970-01-01
      • 2014-10-26
      相关资源
      最近更新 更多