将一些Cocoa代码移动到Cocoa Touch时,我很失望地发现UIBezierPath缺少"访问路径元素"方法:
– elementCount
– elementAtIndex:
– elementAtIndex:associatedPoints:
– removeAllPoints
– setAssociatedPoints:atIndex:
Run Code Online (Sandbox Code Playgroud)
在Cocoa Touch中获取这些元素的唯一方法似乎就是通过CGPathApply
.在我尝试将其重新创建为UIBezierPath的子类或类别之前,我想知道这是否已经完成.有没有人知道这样的事情是否已经可用?
我想允许用户绘制曲线,使得任何线都不能穿过另一条线甚至自身.绘制曲线是没有问题的,我甚至发现我可以通过追踪线的节点向前和向后然后关闭路径来创建一个闭合的路径,并且仍然是线条状的.
不幸的是,iOS只提供了一个测试点是否包含在一个封闭的路径中(containsPoint:和CGPathContainsPoint).不幸的是,用户可以非常容易地移动他们的手指足够快以使触摸点落在现有路径的两侧而实际上不被该路径包含,因此测试触摸点是非常没有意义的.
我找不到任何"路口"的路径方法.
关于如何完成这项任务的任何其他想法?
我有一个任意的CGPath
,我想找到它的地理中心.我可以得到路径边界框,CGPathGetPathBoundingBox
然后找到该框的中心.但有没有更好的方法来找到路径的中心?
对于那些喜欢看代码的人的更新:这里是使用Adam在答案中建议的平均点数方法的代码(不要错过下面答案中更好的技术)...
BOOL moved = NO; // the first coord should be a move, the rest add lines
CGPoint total = CGPointZero;
for (NSDictionary *coord in [polygon objectForKey:@"coordinates"]) {
CGPoint point = CGPointMake([(NSNumber *)[coord objectForKey:@"x"] floatValue],
[(NSNumber *)[coord objectForKey:@"y"] floatValue]);
if (moved) {
CGContextAddLineToPoint(context, point.x, point.y);
// calculate totals of x and y to help find the center later
// skip the first "move" point since it is repeated at the end in this …
Run Code Online (Sandbox Code Playgroud) 如果我有一个unsigned char *data
指针,我想检查size_t length
该指针的数据是否为NULL,那么最快的方法是什么?换句话说,确保内存区域为空白的最快方法是什么?
我在iOS中实现,所以你可以假设iOS框架可用,如果有帮助的话.另一方面,简单的C方法(memcmp
等)也可以.
注意,我不是要清除内存,而是试图确认它已经很清楚了(我试图找出某些位图数据中是否有任何内容,如果有帮助的话).例如,我认为以下内容可行,但我尚未尝试过:
- BOOL data:(unsigned char *)data isNullToLength:(size_t)length {
unsigned char tester[length] = {};
memset(tester, 0, length);
if (memcmp(tester, data, length) != 0) {
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
我宁愿不创建一个测试器阵列,因为源数据可能非常大,我宁愿避免为测试分配内存,即使是暂时的.但我可能在那里过于保守.
感谢大家对下面的好评.我决定创建一个测试应用程序,看看它们是如何表现的,答案让我感到惊讶,所以我想我会分享它们.首先,我将向您展示我使用的算法版本(在某些情况下,它们与提议的算法略有不同),然后我将分享该领域的一些结果.
首先,我创建了一些示例数据:
size_t length = 1024 * 768;
unsigned char *data = (unsigned char *)calloc(sizeof(unsigned char), (unsigned long)length);
int i;
int count;
long check;
int loop = 5000;
Run Code Online (Sandbox Code Playgroud)
每个测试由循环运行loop
时间组成.在循环期间,一些随机数据被添加到data
字节流中以及从字节流中移除.请注意,实际上没有数据添加的一半时间,因此测试不应该找到任何非零数据的一半时间.请注意,该 …
我有一个UIView,当它出现时使用UIModalTransitionStylePartialCurl过渡样式在模态视图中使用.这个UIView包含一个UIButton.奇怪的是,每当视图出现时,当主页面向上移动到窗口顶部时,模态视图上的按钮会自动动画,文本似乎从其自身的中心键入到按钮上.这个动画的动作有点分散注意力.
为什么会这样?有什么方法可以预防吗?
UIButton确实使用自定义背景,但它在XIB中为模态视图定义,并且不使用我自己的任何特殊子类.这是一个标准按钮.
每当我单击/点击/聚焦该字段时,我想要一个 TextField 来选择该字段中当前的整个文本。以下代码适用于 Chrome (71.0.3578.98),但不适用于 Safari (12.0.2)。有什么想法吗?
import React from "react";
import ReactDOM from "react-dom";
import "./styles.css";
function App() {
return (
<>
<h1>Test Focus React</h1>
<input
type="text"
defaultValue="test"
onFocus={event => {
event.target.select();
}}
/>
</>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
Run Code Online (Sandbox Code Playgroud)
然而这个没有任何 React 的静态 HTML 文件在 Safari 上工作得很好。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Test Focus JS</title>
</head>
<body>
<h1>Test Focus JS</h1>
<input type="text" value="test" …
Run Code Online (Sandbox Code Playgroud) 我和一个合作伙伴正在通过Git管理Xcode项目。他最近对项目进行了“本地化”,从而在项目中添加了德语目录(“ de.lproj”),其中包含许多文件。将这些更改移到项目副本之后,Xcode现在无法编译,抱怨该目录中的两个文件不存在。这些文件存在于文件系统中,但在Xcode侧栏中显示为红色(丢失)。
有没有一种方法可以强制Xcode重建其内部文件目录,以便它可以“重新发现”这些文件确实存在?
注意,我也尝试过对该Git项目进行全新的“克隆”,结果相同。
每当我单击/点击/聚焦该字段时,我都希望获得一个 TextField 来选择当前在该字段中的整个文本。我自己在其他 React 应用程序中使用了一个执行 的onFocus
处理程序来完成此操作event.target.select()
,但这种方法似乎不适用于 Material-UI。使用 Material-UI TextFields,我可以看到选择简短地覆盖了全文,然后它返回到仅在文本末尾闪烁的光标。
知道如何进行这项工作吗?
我正在维护一个Joomla模块,该模块安装在我没有文件传输权限的站点上.当然我在Joomla的测试实例中进行开发,在那里我有文件传输权限,在那里我可以编辑模块代码并重新加载页面,一切运行良好.
但是,当需要将更新的模块移动到"实时"站点时,唯一的选择似乎是卸载现有版本的模块,然后上载新版本的模块.如果我只是尝试使用Joomla"Extension Manager"安装选项重新上传模块,我会收到"另一个模块已在使用目录"错误.
但是,卸载也会消除已设置为使用此模块的所有"位置",并进行一些广泛的参数调整.
有没有办法让Joomla让我用新版本覆盖旧版本的模块?我可以在模块的XML描述中添加一些内容来促进这一点吗?
我写的网站正在运行Joomla 1.5.23.
ios ×5
cocoa-touch ×3
iphone ×2
reactjs ×2
uibezierpath ×2
c ×1
cgpath ×1
cocoa ×1
git ×1
hittest ×1
joomla ×1
joomla1.5 ×1
material-ui ×1
nsdata ×1
objective-c ×1
safari ×1
uibutton ×1
xcode ×1