如何自动绕过弹出视图的边缘?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (38)

我正在为我正在制作的应用程序创建一个弹出视图。如果您花一点时间查看下面附带的图像,您会看到顶部边缘是圆形的,但底部边缘不是。这是因为我只舍入了视图的边缘(它在层次结构中最低)。我不能围绕图像的边缘(彩色框),因为它们是滚动视图中的表格。我能想到的唯一解决方案是一个非常丑陋的解决方案,我用UIImageView屏蔽底部边缘,一旦弹出窗口消失,就会出现。有没有人有更好的解决方案?如果是这样,我将非常感谢您的帮助。此外,我的滚动视图尚未起作用,因此这里没有引用它,并且解决方案(如果功能)应该可以工作。

我的代码:

allSeenPopover.layer.cornerRadius = 5
userProfile.layer.cornerRadius = 15
colorBackground.layer.cornerRadius = 15
colorBackground.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]

@IBAction func loadUserProfile(_ sender: Any) {

    if darken.alpha == 0 {

        darken.alpha = 1
        self.view.addSubview(userProfile)
        userProfile.center = self.view.center

        userProfile.transform = CGAffineTransform.init(scaleX: 1.3, y: 1.3)
        userProfile.alpha = 0

        UIView.animate(withDuration: 0.3) {
            self.largeDropShadow.alpha = 0.3
            self.userProfile.alpha = 1
            self.userProfile.transform = CGAffineTransform.identity
        }
    }

    else {
        UIView.animate(withDuration: 0.2, animations: {
            self.userProfile.transform = CGAffineTransform.init(scaleX: 1.3, y: 1.3)
            self.userProfile.alpha = 0
            self.darken.alpha = 0
            self.largeDropShadow.alpha = 0

        }) { (success:Bool) in
            self.userProfile.removeFromSuperview()
        }
    }
}

我所指的图像:

提问于
用户回答回答于

由于要舍入的视图位于表视图单元格内,因此必须注意每个重用单元格仅创建一次视图。

每次重用的单元格滚动到视图中时,检查它是否具有imageView子视图(使用单元格内唯一的标记是进行该检查的快速方法)。如果您没有,请创建它,然后为特定行配置它,否则只需为特定行配置它...

(警告,我不是很流利,但想法应该清楚)

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellReuseIdentifier) as UITableViewCell!

    let imageView:UIImageView = cell.viewWithTag(99) as? UIImageView
    if (!imageView) {
        // this code runs just once per reused cell, so setup
        // imageView properties here that are row-independent
        imageView = UIImageView()
        imageView.tag = 99  // so we'll find this when the cell gets reused
        imageView.layer.cornerRadius = 15.0
        imageView.clipsToBounds = true
        // any other props that are the same for all rows
        imageView.frame = // your framing code here
        cell.addSubview(imageView)
    }
    // this code runs each time a row scrolls into view
    // so setup properties here that are row-dependent
    imageView.image = // some function of indexPath.row

    return cell
}

所属标签

可能回答问题的人

  • 天使的炫翼

    17 粉丝531 提问36 回答
  • 富有想象力的人

    3 粉丝0 提问30 回答
  • 学生

    3 粉丝476 提问28 回答
  • o o

    4 粉丝494 提问27 回答

扫码关注云+社区

领取腾讯云代金券