如何以编程方式准确定位 UIColorwell?

Posted

技术标签:

【中文标题】如何以编程方式准确定位 UIColorwell?【英文标题】:How to position UIColorwell accurately programmatically? 【发布时间】:2021-11-29 00:05:09 【问题描述】:

我没有使用界面构建器/故事板,我以编程方式完成所有操作,并且没有自动布局。在这种情况下,如果你设置一个 UIColorwell 并给它一个框架,那么实际的 colorwell 图像(即彩虹圈)将始终是相同的大小,并且会粘在它自己框架的左上角,而不管框架大小。我期待它随着它的框架大小一起缩放。这种固定大小因设备而异,因此很难与 UI 上的任何其他图像/SF 符号对齐。

我尝试了各种技术来使颜色井居中,例如更改其 contentHorizo​​ntalAlignment 和 contentVerticalAlignment,但它仍然卡在左上角。但即使我设法将它放在自己的框架内,我仍然不知道渲染的圆点大小,所以我不能将它定位在其他相同大小的圆之外(就像在 ios 的标记中所做的那样)。我查看并更改了各种 UIControl 属性,但也无济于事。

两个问题:有什么方法可以在设备运行时找出彩虹圈的渲染点大小/像素大小?有没有办法让它(彩虹圈)以自己的框架为中心(这对于可触摸的矩形很重要)。

我使用 Objective C(不确定 Swift 上是否存在这种行为),我在 iOS 14 上,尚未测试 iOS 15。我正常设置:

colorWell =  [[UIColorWell alloc] init];
[colorWell  addTarget:self action:@selector(colorWellPressed:) forControlEvents:UIControlEventTouchUpInside];
colorWell.supportsAlpha = NO;
colorWell.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);

我非常感谢您对这个问题的任何想法。干杯。

【问题讨论】:

【参考方案1】:

这对我有用:

UIColorWell *cPicker=[[UIColorWell alloc] initWithFrame:CGRectMake(50,10,60,40)];
cPicker.title=@"Select Color";
cPicker.supportsAlpha=NO;
cPicker.selectedColor=[UIColor blackColor];
[cPicker addTarget:self action:@selector(cWellC:) forControlEvents:UIControlEventValueChanged];
[cPicker addTarget:self action:@selector(cWellT:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:cPicker];[cPicker release];  

【讨论】:

以上是关于如何以编程方式准确定位 UIColorwell?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式添加标签并以编程方式使用自动布局定位它

如何以编程方式使用 Facebook 地理定位?

如何以编程方式使用自动布局将活动指示器定位到其超级视图的中心?

Swift - 以编程方式在 UIView 中定位项目

iOS - 以编程方式使用自动布局将 UIView 定位在超级视图的中心

Android 编程:如何以网格方式以编程方式创建各种视图类型