我正在尝试创建一个复制Dashboard小部件行为的Card类,因为您可以将控件或图像或其他任何内容放在卡的两侧并在它们之间切换.
图层支持的视图具有转换属性,但更改它不会执行我期望它做的操作(围绕y轴旋转图层将其折叠到左侧).
我被指向了一些未记录的功能和一个名为cgsprivate.h的.h文件,但我想知道是否有正式的方法来执行此操作?这个软件必须发货,我讨厌看到它失败,因为苹果公司的人在10.6中取得了它.
任何人都知道如何做到这一点?对于我来说,如此简单的小部件在Core Animation中很难做到.
提前致谢!
编辑:我可以使用图层上的图像来完成此行为,但我不知道如何在图层上获得更高级的控件/视图/任何内容.卡片示例使用图像.
我有一张图片,显示地图上哪条路是北方.如果找到新标题,则此图像由CoreLocation更新.它也放在正确的位置,我使用以下代码:
locateMeView.transform = CGAffineTransformMakeRotation(([CoreLocationController sharedInstance].heading - 45) * M_PI / 180);
CGRect frame = locateMeView.frame;
CGPoint pos = [MapClass vectorForLocation:[CoreLocationController sharedInstance].location mapCenter:curLocation zoom:curZoom];
frame.origin.x = (int)(self.view.bounds.size.width/2 + pos.x - frame.size.width / 2);
frame.origin.y = (int)(self.view.bounds.size.height/2 + pos.y - frame.size.height / 2);
frame.size.width = 24;
frame.size.height = 24;
locateMeView.frame = frame;
Run Code Online (Sandbox Code Playgroud)
CoreLocationController是一个存储正常CoreLocation更新的类.MapClass将lat/lng坐标转换为地图上的x/y坐标.图像的位置是正确的,但旋转会产生奇怪的效果.对于0 en M_PI,图像是正确的,但在这些图像之间,图像被拉伸,好像它也围绕z轴旋转,并且在M_PI/2和3*M_PI/2处,它完全消失.有人可以解释发生了什么,我做错了什么?
我创建了一个可以转换单个XML文件的XSLT文件.但是,我有几百个带有多个xml文件的目录.在XSLT中是否有办法转换所有这些文件.我正在使用集合函数来获取所有文件的列表.但是,现在还不确定如何应用转换.
这是我的示例XSLT文件.基本上,我想循环遍历所有xml文件并在单个文件上应用模板表.所有这些转换的输出需要在一个单独的平面文本文件中.
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:foo="http://whatever">
<xsl:output method="text" encoding="ISO-8859-1"/>
<xsl:template name="process">
<xsl:variable name="files" select="collection('file:///C:/files/testResults?select=*.xml;recurse=yes')"/>
<xsl:for-each select="$files">
<xsl:if test="(not(contains(document-uri(.), 'SuiteSetUp'))) and (not(contains(document-uri(.), 'SuiteTearDown')))">
<xsl:value-of select="tokenize(document-uri(.), '/')[last()]"></xsl:value-of>
<xsl:apply-templates select="/testResults/result/tables/table[14]">
<xsl:with-param name="title" select="/testResults/rootPath"></xsl:with-param>
</xsl:apply-templates>
<xsl:apply-templates select="/testResults/result/tables/table[15]"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template match="table">
<xsl:param name="testName"></xsl:param>
<xsl:for-each select="row">
<xsl:if test="position() > 2">
<xsl:variable name="choices" select="col[2]"></xsl:variable>
<xsl:if test="contains($choices, 'fail')">
<xsl:value-of select="$testName"></xsl:value-of>
<xsl:text>|</xsl:text>
<xsl:value-of select="col[1]"></xsl:value-of>
<xsl:text>|</xsl:text>
<xsl:value-of select="foo:getCorrectChoices(col[2])"></xsl:value-of>
<xsl:text>|</xsl:text>
<xsl:value-of select="foo:getExpectedChoices(col[2])"></xsl:value-of>
<xsl:text>|</xsl:text>
<xsl:call-template name="NewLine"/>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template name="NewLine">
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:function name="foo:getCorrectChoices">
<xsl:param name="content"></xsl:param>
<xsl:analyze-string select="$content" …Run Code Online (Sandbox Code Playgroud) 好吧,这个问题给我带来了很多问题.
将css3 -webkit-transform样式与任何类型的3d旋转(例如rotateY(30deg))一起使用时,将click事件绑定到此旋转对象是极不可靠的.
请参阅下面的示例代码或查看此小提琴(要查看小提琴中的不可靠性,请单击元素的右侧).此示例没有动画但仍受影响.
HTML:
<div id='box1'>Click this box.</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
#box1{
-webkit-transform: rotateY(30deg);
}
Run Code Online (Sandbox Code Playgroud)
jQuery的:
$('#box1').click(function(){
alert('clicked box 1');
});
Run Code Online (Sandbox Code Playgroud)
我的意思是'不可靠'是不会总是抛出click事件(取决于你点击它的位置),有时事件根本不会被抛出(无论你在哪里点击它).
有没有办法解决或避免这种情况,以便旋转和动画时它与CSS3元素一起使用?
更新:
在元素上使用CSS属性"float:left"似乎允许它在不运动时正确检测点击事件.有谁知道为什么浮动属性修复了这个?
我的最终目标是让对象在运动时接收点击事件,但是,当我应用新的CSS3 rotate3d属性(实时,在另一个jquery事件上)给出对象动画时,click事件再次开始失败.
我有一个jQuery图像滚动条,使用perpective和transform: translateZCSS属性模拟深度.它在Chrome中正确呈现,但在IE10或Firefox中无法呈现.
这是完整的项目(点击"Who's coming"菜单链接查看图像滚动条):http: //www.girlguiding.org.uk/test/biggig/index.html 这里是相关代码的jsFiddle :http: //jsfiddle.net/moosefetcher/rxCMr/28/ (我不知道为什么,但stackoverflow告诉我我需要包含链接到jsFiddle的代码,所以这里是css)...
.scroller {
position: relative;
perspective: 150;
-webkit-perspective: 150;
-ms-perspective: 150;
-moz-perspective: 150;
}
.artistBox {
width: 228px;
height: 268px;
background-color: #000000;
border-radius: 16px;
position: absolute;
overflow: hidden;
z-index: 4;
}
.artistBox p {
position: absolute;
font-family:"Arial", sans-serif;
color: white;
font-size: 22px;
}
.artistBoxFront {
z-index: 5;
}
.artistBoxNew {
z-index: 3;
opacity: 0;
}
.scrollerButton {
position: absolute;
top: 128px;
width: 32px;
height: …Run Code Online (Sandbox Code Playgroud) 在IE10(Windows 8和Windows 8,包括RT)中,我有div一个overflow : auto从屏幕外部动画(CSS3 transition+ transform)
div直到转换结束时才会呈现此(纯文本)的内容,即div看似空.
如果我设置overflow : hidden,问题就会消失.
此行为在此处转载:http ://jsbin.com/inUsayU/5/(此jsBin链接仅适用于IE10)
保持屏幕分割(如果没有拆分,添加CSS和HTML窗格),将鼠标悬停在第一个链接上,您应该看到div转换为空.尝试悬停第二个链接,另一个div过渡很好.您可能每次都必须使用"Run with JS"重新启动,因为通常(并非总是)问题只发生一次.
在我的项目中,我使用UA Sniffing破解了一个丑陋的解决方案overflow并在转换之前和之后切换状态,但我希望您可以提供更简单的解释/解决方案.
我试图找出如何从rotate3d()函数转换为等效rotateX() rotateY() rotateZ()函数.沿着素数轴的向量很容易,但我想知道如何对任意向量进行处理.我对矩阵数学没有希望,我意识到这可能是一个障碍,但理想情况下,我最终会得到类似的东西:
rotate3d(x,y,z,a)...... rotateX()[[ as-simple-as-possible equation此处 ]]确定 rotateY()[[ as-simple-as-possible equation此处 ]]确定 rotateZ()[[ as-simple-as-possible equation此处 ]]确定 拥有这些对于构建可视化工具非常有用,可以帮助教授作者如何rotate3d()工作,这是我最终目标的一部分.
(这个问题基本上与rotate3d简写相反[或者它是相反的?] .)
我在 2D 中有 4 个点的坐标,它们在应用透视变换后形成一个矩形和它们的坐标。
透视变换在齐次坐标中计算并由 3x3 矩阵定义M。如果矩阵未知,我如何从给定的点计算它?
一分的计算将是:
| M11 M12 M13 | | P1.x | | w*P1'.x |
| M21 M22 M23 | * | P1.y | = | w*P1'.y |
| M31 M32 M33 | | 1 | | w*1 |
Run Code Online (Sandbox Code Playgroud)
为了同时计算所有点,我将它们一起写在一个矩阵中A,类似于矩阵中的转换点B:
| P1.x P2.x P3.x P4.x |
A = | P1.y P2.y P3.y P4.y |
| 1 1 1 1 |
Run Code Online (Sandbox Code Playgroud)
所以方程是M*A=B,这可以M在 MATLAB 中通过M = …
我有一个圆形的视图,并通过以下代码覆盖touchesBegan(touches:, withEvent:)和旋转touchesMoved(touches:, withEvent:).
var deltaAngle = CGFloat(0)
var startTransform: CGAffineTransform?
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
{
let touchPoint = touches.first!.locationInView(view)
let dx = touchPoint.x - view.center.x
let dy = touchPoint.y - view.center.y
deltaAngle = atan2(dy, dx)
startTransform = arrowPickerView.transform
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?)
{
let touchPoint = touches.first!.locationInView(view)
let dx = touchPoint.x - view.center.x
let dy = touchPoint.y - view.center.y
let angle = atan2(dy, dx)
let angleDifference = deltaAngle - …Run Code Online (Sandbox Code Playgroud) 我正在尝试groupby计算特定输出中每月和每年的日期。我每天都可以这样做,但是每月/每年都无法获得相同的输出。
d = ({
'Date' : ['1/1/18','1/1/18','2/1/18','3/1/18','1/2/18','1/3/18','2/1/19','3/1/19'],
'Val' : ['A','B','C','D','A','B','C','D'],
})
df = pd.DataFrame(data = d)
df['Date'] = pd.to_datetime(df['Date'], format= '%d/%m/%y')
df['Count_d'] = df.Date.map(df.groupby('Date').size())
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出:
Date Val Count_d
0 2018-01-01 A 2
1 2018-01-01 B 2
2 2018-01-02 C 1
3 2018-01-03 D 1
4 2018-02-01 A 1
5 2018-03-01 B 1
6 2019-01-02 C 1
7 2019-01-03 D 1
Run Code Online (Sandbox Code Playgroud)
当我尝试执行类似操作但每月和每年执行一次时,请使用以下命令:
df1 = df.groupby([df['Date'].dt.year.rename('year'), df['Date'].dt.month.rename('month')]).agg({'count'})
print(df)
Run Code Online (Sandbox Code Playgroud)
但是输出是:
Date Val
count count
year month
2018 1 4 4
2 …Run Code Online (Sandbox Code Playgroud)