javascript 自动布局算法

JavaScript015

javascript 自动布局算法,第1张

将整个系统看做这样一个物理系统:质点和橡皮筋的系统;橡皮筋有个自然长度Length,当橡皮筋被拉长时产生弹力T;任意2个质点间存在反万有引力G(简单的说就是质量产生斥力,和物理系统相反)。当斥力和弹力平衡的时候,布局就结束了,算法简单描述如下:

设系统为G(V,E)

for (vi in V) {

vi.x = random ()

vi.y = random ()

}

while (未平衡) {

for (ei(vx, vy) in E) {

Fx += T(ei, vx, vy)

Ty += T(ei, vy, vx)

}

for (vi in V) {

for (vj in V) {

if (i == j) 跳过

Fi += G (vi, vj)

}

}

for (fi in F) {

vi.x = |fi| * cos(fi.angle)

vi.y = |fi| * sin(fi.angle)

}

}

其中弹力公式T(e, vi, vj)遵循胡克定律:F = Length(e) >Length ? K * (Length(e) - Length) : 0K 为胡克常数,酌情取值

万有引力公式G(vi, vj)遵循牛顿万有引力定律,但方向相反:

F = -G * Mass(vi) * Mass(vj) / (Distance(vi, vj) * Distance(vi, vj))G 为万有引力常数,酌情取值,Mass(v)为质点v的质量,可直接去定点的边数;Distance(vi, vj)为质点vi 和vj之间的距离,根据勾股定理可到。

系统平衡的标准:合弹力=合斥力,表现为v.x和v.y不再发生变化或震动

注意:当随机初始化后,可能产生2个质点重叠的现象,这时2质点间的斥力可用常数替代,方向随机。若质点无质量,可使用一个小常数替代,如.0005

js怎么获取div自适应高度值 然后赋值给另外的div

假设div根据浏览器大小改变时跟着自适应改变。

那么js就写在浏览器视窗改变时,获取div的高度值,然后赋值给需要的div。

浏览器改变的时候获取值或者改变值,是有对应的js方法的

求助,swift中怎么让UILabel自适应高度

第一 如果在Cell中用自动布局,拖好constrains,改变Cell的高度。

第二 如果是自己新增的,计算字串的高宽,然后改变frame,计算高宽用

我写的一个extension嘛

extension NSString {

func textSizeWithFont(font: UIFont, constrainedToSize size:CGSize) ->CGSize {

var textSize:CGSize!

if CGSizeEqualToSize(size, CGSizeZero) {

let attributes = NSDictionary(object: font, forKey: NSFontAttributeName)

textSize = self.sizeWithAttributes(attributes)

} else {

let option = NSStringDrawingOptions.UsesLineFragmentOrigin

let attributes = NSDictionary(object: font, forKey: NSFontAttributeName)

let stringRect = self.boundingRectWithSize(size, options: option, attributes: attributes, context: nil)

textSize = stringRect.size

}

return textSize

}

}

constrainedToSize 如果一行,用CGSizeZero,否则用CGSizeMake(你想要的宽度, CGFloat(MAXFLOAT)

swift中怎么让UILabel自适应高度

1、完成程式码:ctrl+\ 任何地方按下此组合键,均会提示相应的参考栏位;

2、错误提示:alt + enter 顾名思义,当系统报错时,按下此组合可以检视系统提示;

3、自动完成字串: ctrl+L ctrl+k 后者(Ctrl+L没用过)组合键自动打出字串,每按一次打出一个新串,串序自下向上;

4、右键:修复自动汇入

5、右键:格式化程式码风格

6、汇入所需包:ctrl+shift+i

7、格式化程式码:alt+shift+F

8、注释/取消注释:ctrl+/,此功能支援多行注释,但首先需选中所要注释行

9、psvm+Tab 生成Main方法

10、sout + Tab 生成输出语句

11、ctrl+enter 增加空白行,游标不移动;

12、alt+shift+F 格式,不太懂什么意思,高手可以解释下;

13、alt+enter 不太会用;

13、Alt+insert 插入程式码(包括建构函式,setter和getter方法等);

14、Alt+Shift+O 转到类;

15、Ctrl+Tab 在开启的原始档中进行切换;

16、Ctrl+O或Ctrlt+单击 转到源,即按住Ctrl键然后单击某源就可以开启原始码;

补充几条:

Shift+F6 运行当前程式

Ctrl+Shift+F5: 除错当前程式

Ctrl+F 快速查询程式码中的字串

Ctrl+Delete 也是一个比较常用的shortcut,大家可以试试;

Ctrl+Shift+Right 向右逐个选中

Ctrl+Shift+Left 向左逐个选中

Ctrl+Shift+UP/DOWN 复制当前行到下一行,游标不动

一个div怎么在另一个自适应高度的div垂直居中 两个div不是子父集关系

第一个div属性position:absolute;left:50%; :50%; margin-left:-(width/2);

margin-:-(height/2);注意第一个div高度宽度都应该是定值的;

意思是两个div的宽高都是用百分比设定的,那最好是让他俩有点父子关系,或者,第一个div只能是做成弹窗显示的,居中在整个萤幕中央了

求获取div宽值赋值给高的JS程式码

<div height=40px width=70px onclick="gofuzhi(this)">点选我</div>

<script>

function gofuzhi(obj){

var wdth = $(obj).attr("width")

$(obj).attr('height', wdth)

}

</script>

测试的时候别忘记引入 jquery 档案

提问qml中的listview中的item怎么自适应高度

你设定放到listview里面的引用控制元件 例如你listview里面显示的是textview那么你就设定该控制元件高度就OK!

UIButton可以自适应高度吗,像UILabel一样

unbutton中有一个uilabel,可以进行设定

先算 button title 的高度,在设定button的frame 怎么样