我有 5 个 ImageView 。我需要获取被点击的 ImageView 的 ID。我尝试添加点击手势标识符并获取发件人的 ID,但我没有得到它。
到目前为止我尝试过的方法如下
@IBOutlet weak var userRateViewStar1ImageOutlet : UIImageView!
@IBOutlet weak var userRateViewStar2ImageOutlet : UIImageView!
@IBOutlet weak var userRateViewStar3ImageOutlet : UIImageView!
@IBOutlet weak var userRateViewStar4ImageOutlet : UIImageView!
@IBOutlet weak var userRateViewStar5ImageOutlet : UIImageView!
@IBOutlet weak var userRateViewTextAreaOutlet : UITextView!
@IBOutlet var starOutletCollectionOutlet : [UIImageView]!
@IBAction func starRatingAction(_ sender: UITapGestureRecognizer)
{
var tag = sender.view!.tag
print(tag)
}
基本上我正在尝试实现费率功能。
那么有人可以建议我一种实现这个的方法吗?
最佳答案
您可以只使用UIButton
。
如果您想使用 UIImageView
,请按以下步骤操作:
- 拖出一个
UIImageView
。在右侧的“属性检查器”中,将其图像设置为您的“star.png”图像并选中“启用用户交互”。 - 使用复制(命令-C)和粘贴(命令-V)制作四份副本。将它们排成一行,将它们全部选中,然后通过从菜单中选择编辑器->嵌入->堆栈 View 将它们嵌入到
StackView
中。选择填充对齐和按比例填充进行分布。 - 为您的堆栈 View 指定长宽比约束为
5:1
。对其进行约束以将其放置在页面上并定义其宽度。 - 每个图像都需要自己的点击手势识别器,但它们都可以连接到相同的
@IBAction
例程。拖出点击手势识别器并将其放在每个图像上。在文档大纲 View 和控件中找到 5 个点击手势识别器 - 将它们分别拖动到您的@IBAction
例程。 - 将标签
1
到5
分配给您的星星图片。 如果您的
UIImageView
需要@IBOutlet
,您可以将它们分别连接到同一个 Outlet Collection,例如作为您的:@IBOutlet var starOutletCollection : [UIImageView]!
然后你可以循环它们来更改它们的图像,例如:
// turn off all of the stars for star in starOutletCollection { star.image = UIImage(named: starOff.png) }
关于ios - 如何将多个 ImageView 分组以获得 1 个点击手势识别器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47450584/