我知道这些值:
CGFloat.infinity,大于CGFloat.greatestFiniteMagnitude,大于CGFloat.leastNormalMagnitude,大于CGFloat.leastNonzeroMagnitude,大于0但它就停在那里...据我所知。负值在哪里?我想这也许和-在它们前面放一个字母一样容易,但是然后我担心可能会有奇怪的例外。
如何在CGFloat中找到关键的负数?至关重要的是,最低的负非无限数。
我的应用程序中有一些颜色的内部代码,所以我创建了一个函数,给定一种颜色,返回代码.我遇到了问题,因为它只是不起作用,并且除了红色之外的每种颜色总是返回"01",这将返回正确的代码.有人知道吗?
(NSString*)internalColorCode:(UIColor*)color {
const CGFloat *components = CGColorGetComponents(color.CGColor);
CGFloat red = components[0];
CGFloat green = components[1];
CGFloat blue = components[2];
NSString *s = [NSString stringWithFormat:@"-- Red: %f - Green: %f - Blue: %f", red, green, blue];
NSLog(s);
if ((0.949019 <= red <= 0.949021) && (0.949019 <= green <= 0.949021) && (0.952940 <= blue <= 0.952942)) {
return [NSString stringWithFormat:@"01"];
} else if ((0.760783 <= red <= 0.760785) && (0.768626 <= green <= 0.768628) && (0.776470 <= blue <= 0.776472)) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个块变量,它接受 CGFloat 参数并返回 CGFloat。
CGFloat (^debt)(CGFloat) = ^(CGFloat myFloat) {
return myFloat * 444563.4004;
};
Run Code Online (Sandbox Code Playgroud)
这个定义有什么问题呢?为什么我会收到此警告?
所以我正在写一个低通加速度计功能来缓和加速度计的抖动.我有一个CGFloat数组来表示数据,我想用这个函数来阻止它:
// Damps the gittery motion with a lowpass filter.
func lowPass(vector:[CGFloat]) -> [CGFloat]
{
let blend:CGFloat = 0.2
// Smoothens out the data input.
vector[0] = vector[0] * blend + lastVector[0] * (1 - blend)
vector[1] = vector[1] * blend + lastVector[1] * (1 - blend)
vector[2] = vector[2] * blend + lastVector[2] * (1 - blend)
// Sets the last vector to be the current one.
lastVector = vector
// Returns the lowpass vector.
return vector
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,lastVector在我的程序顶部定义如下: …
我UILabels里面有一堆垂直的UIStackView。堆栈使所有标签具有相同的宽度和高度。
每个标签都有一个浮点数,如下所示:
但这在美学上是丑陋的。我想按点对齐数字。像这样:
我的问题之一是这些花车位于不同的标签中。
这些数字使用它来格式化:
[NSString stringWithFormat:@"%.2f", value];
Run Code Online (Sandbox Code Playgroud)
我不知道是否有可能。所以,我没有代码可以显示。有可能这样做吗?如何?
编辑:浮动在标签上左对齐。好的,我可以减少标签宽度并将它们向右对齐,但我想知道代码中是否有另一种解决方案,因为减少标签的宽度会导致界面上出现其他问题,从而破坏整个事情。
当我尝试这个时:
let progress: CGFloat = CGFloat(2 / 3)
print(progress)
Run Code Online (Sandbox Code Playgroud)
控制台返回 0 但结果是 0,66666666667,而不是 0.... 为什么会这样?
当我尝试:
let progress: CGFloat = CGFloat(10 / 3)
print(progress)
Run Code Online (Sandbox Code Playgroud)
它返回 3.0,这是 CGFloat 的工作方式吗?有没有办法用 CGFLoat 获取逗号数字?
Double 和 CGFloat 都将相同的值打印到控制台 (#2),但只有 Double 发出警告 (#1):
(#1) - 警告
(#2) - 将每个打印到控制台
DOUBLE = 9.223372036854776e+18
CGFLOAT = 9.223372036854776e+18
Run Code Online (Sandbox Code Playgroud)
许多文章提到 CGFloat 在 32 位平台上是 Float,在 64 位平台上是 Double,但这不是仅指后备存储吗?幕后是否有更多因素导致 CGFloat 比 Double 更准确?
我有一个带有几个表的视图控制器.我希望一张桌子比其他桌子有更大的单元格.现在,我有:
- (CGFloat *)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView != myBigTable)
{
return 44;
}
else
{
return 88;
}
}
Run Code Online (Sandbox Code Playgroud)
我收到警告说
不兼容的整数到指针转换从结果类型为'CGFloat*'的函数返回'int'(又名'float*')
当我运行它时,它会崩溃.
我也尝试过:
return 44.0 - double to float*转换的错误return 44.0f - 浮动到浮动*转换的错误CGFloat *height; height = 44; return height; - 与直接返回我想要的值相同的错误我找了类似于[CGFloat floatWithDouble:44.0];NSNumber的东西,但我没有找到任何东西.我应该使用什么?
我是Swift的初学者.
我有这个错误
无法使用类型为'($ T10,CGFloat)'的参数列表调用'+'
func loadBackground(key: NSString, width:CGFloat, height:CGFloat) -> UIImage!{
var imageName = key + "_" + width + "_" + height
return UIImage(named: imageName)!
}
Run Code Online (Sandbox Code Playgroud) 我在我的Xcode项目中进行编程,突然间我得到了一个警告:
for var i:CGFloat = 0; i<3; i++
Run Code Online (Sandbox Code Playgroud)
"将在Swift 3中删除." 它给了我一个选项,将代码"修复"为Swift 3语法并将其切换为:
for i:CGFloat in 0 ..< 3 {
Run Code Online (Sandbox Code Playgroud)
现在我的代码将不会运行,并且它得到的错误"Binary operator'.<'不能应用于两个' Int'操作数.
对于以下内容:
struct Constants {
static let m2Pi = CGFloat(M_PI) * 2
}
Run Code Online (Sandbox Code Playgroud)
SwiftLint 0.16.1警告我:
警告:传统常量违例:结构范围的常量优先于传统的全局常量.(legacy_constant)
请注意,我需要此值UIBezierPath.init(arcCenter center: CGPoint, radius: CGFloat, startAngle: CGFloat, endAngle: CGFloat, clockwise: Bool)来获得闭合弧.