当用户点击image(黑点)的特定区域时,我想调用该动作(转到另一个视图):。图像充满整个视图,内容模式为“宽高比”。问题是,当我在另一屏幕尺寸(例如iPhone 8)上设置它时,``点击区域''被移动了。我尝试使用按钮和约束或使用屏幕分辨率(nativeBounds)进行点转换的UITapGestureRecognizer来解决此问题,但没有任何帮助。
答案 0 :(得分:0)
您可以尝试创建自己的名为UIView
的{{1}}子类,而不是使用图像。
在BlackDotsView
方法中,您可以绘制线条。为了确定线条的起点和终点,您需要对视图的宽度和高度进行一些数学运算。您计算所有行的结尾并创建draw(_rect:)
,然后描画路径。
在UIBezierPath
的初始化程序中,您可以将点添加为子视图。要使其圆形,只需将BlackDotsView
设置为点宽度的一半即可。然后,您可以将dotView.layer.cornerRadius
s添加到点视图。
您可以通过创建具有UITapGestureRecognizer
方法的BlackDotsViewDelegate
来遵循委托模式。点击一个点时,您将调用委托方法并传递该点的索引。
答案 1 :(得分:0)
可以使用约束条件以UIButton
来匹配圆的位置。技巧是使用约束的multiplier
将按钮的宽度/高度和位置缩放到屏幕尺寸。
我将描述如何对一个按钮进行操作,然后您可以对其他按钮重复该操作。我假设图像宽657
高918
。如果我将尺寸反转了,则需要用实际值代替我使用的值。
UIView
来容纳图像和按钮。给此视图使用multiplier
657:918
的宽高比约束,该约束为width:height。将UIImageView
添加到此视图,并将其4条边限制为具有0
偏移的视图边。在主视图的左右边缘赋予此视图约束,并在垂直约束下将其放置在屏幕上。106 x 106
,在水平位置392
处结束,而最下方的圆圈为338
。106:657
将按钮的宽度设置为等于包含视图的宽度,乘数106:918
是圆的宽度:图像的宽度。392:657
将按钮的高度设置为等于包含视图的高度,乘数338:918
是圆的高度:图像的高度。for(int i=1; i <= allsize; i+=10) {
all[c] = new All();
mPremiumList.clear();
if(pre_size != 0){
if(pre_order < pre_size){
mPremiumList.add(premiumArrayList.get(pre_order));
pre_order++;
}
}
all[c].setPremiumItemsInSection(mPremiumList);
mAllList.add(all[c]);
c++;
}
将按钮的后边缘设置为等于包含视图的后边缘,乘数All all = new All();
是圆的结尾:图像的宽度。这将使按钮在所有设备上与圆圈保持对齐。对其他圈子重复步骤2到6。