JustUiKit:使用 Android 風格的控件構建 iOS UI
JustUiKit
JustUiKit是一套Android樣式工具iOS UI套件。 JustUiKit包含JustLinearLayout,JustFrameLayout, JustRelativeLayout等。 它旨在使Android開發人員輕松構建iOS UI。 也為iOS開發人員提供了一種新的方式來構建UI。
如何使用?
- 拷貝代碼
? 拷貝Deomo中的JustUiKit代碼到項目
-
使用 CocoaPods 安裝
CocoaPods是Objective-C / Swift的依賴項管理器,它自動化和簡化在項目中使用第三方庫(如TangramKit)的過程。 您可以使用以下命令安裝它:
$ sudo gem install cocoapods
要使用CocoaPods將TangramKit集成到您的Xcode項目中,請在Podfile中指定:
platform :ios, '8.0' pod 'JustUiKit', '~> 0.2.1'
之后運行如下命令:
$ pod install
快捷開始
JustLinearLayout
將其子代排列在單列或單行中的布局。 行的方向可以通過方向設置。 您還可以指定gravity,它通過設置重力指定所有子元素的對齊方式,或通過設置LinearLayoutParams的weight成員來指定特定子項增長以填充布局中的任何剩余空間。 默認方向為水平。
Gravity & Margin & Orientation
您可以設置重力以使視圖布局在parentView的指定空間。 還設置Margin將在視圖的四個方向保留空格。 在默認情況下,LinearLayout布局子項在水平方向,并且可以將其更改為Veritcal。
let parentView = JustLinearLayout(frame: UIScreen.main.bounds, orientation: .Vertical)
let params = LinearLayoutParams(
width: LayoutParams.WRAP_CONTENT,
height: LayoutParams.WRAP_CONTENT)
let centerParams = LinearLayoutParams(params)
centerParams.layoutGravity = Gravity.Horizontal.getValue()
let marginParams = LinearLayoutParams(params)
marginParams.topMargin = 10
parentView.addView(createView(), centerParams)
parentView.addView(createView(), marginParams)</code></pre>
Padding & weight

使用Padding在四個方向,您可以保留視圖的內部空間。 “權重”描述了子視圖的位置。 默認為Gravity.TOP | Gravity.LEFT。 如果此布局具有VERTICAL方向,則控制在存在額外垂直空間時放置所有子視圖的位置。 如果此布局具有HORIZONTAL方向,則控制子項的對齊方式。
let parentView = JustLinearLayout(frame: UIScreen.main.bounds, orientation: .Vertical)
let params = LinearLayoutParams(
width: LayoutParams.WRAP_CONTENT,
height: LayoutParams.WRAP_CONTENT)
params.weight = 1
let paddingParams = LinearLayoutParams(params)
paddingParams.paddingTop = 10
parentView.addView(createView(), params)
parentView.addView(createView(), paddingParams)
JustFrameLayout
FrameLayout設計用于屏蔽屏幕上的一個區域以顯示單個項目。
通常,FrameLayout應該用于保存單個子視圖,因為可能難以以可擴展到不同屏幕尺寸的方式組織子視圖,而不會使子節點相互重疊。
然而,您可以添加多個孩子到一個FrameLayout,并通過分配重力給每個孩子,使用layoutGravity控制他們在FrameLayout中的位置。
Overlap on left

如果不使用任何邊距或填充來更改視圖的位置。 所有的視圖將添加像堆棧和重疊在屏幕的左邊|頂部。
Example:
let parentView: JustFrameLayout = JustFrameLayout(width:MATCH_PARENT, height:MATCH_PARENT)
let params: FrameLayoutParams = JustFrameLayoutParams(width: WRAP_CONTENT, height: WRAP_CONTENT)
parentView.addView(createView(rgb:0xE4E1D8), params)
parentView.addView(createView(rgb:0x89A49D), params)
parentView.addView(createView(rgb:0x877B6B), params)
Layout With Gravity

您可以使用水平和垂直重力。 此外,您可以使用像left | bottom,center_horizontal | center_vertical來同時使用它們。
Example:
let parentView: FrameLayout = FrameLayout(width:MATCH_PARENT, height:MATCH_PARENT)
let params: FrameLayoutParams = FrameLayoutParams(width: WRAP_CONTENT, height: WRAP_CONTENT)
let b_l = FrameLayoutParams(params)
b_l.layoutGravity = Gravity.BOTTOM | Gravity.TOP
let c_r = FrameLayoutParams(params)
c_r.layoutGravity = Gravity.CENTER_HORIZONTAL | Gravity.RIGHT
parentView.addView(createView(rgb:0xE4E1D8), b_l)
parentView.addView(createView(rgb:0x89A49D), c_r)
parentView.addView(createView(rgb:0x877B6B), params)</code></pre>
JustRelativeLayout
一個布局,其中子節點的位置可以相對于彼此或相對于父節點來描述。
請注意,您不能在RelativeLayout的大小和其子項的位置之間具有循環依賴關系。 例如,您不能具有高度設置為WRAP_CONTENT的RelativeLayout和設置為ALIGN_PARENT_BOTTOM的子級。

在RelativeLayout中,您可以使用所有邊距,填充和重力。 此外,您可以使用一些對齊功能。 例如,如果視圖是alignLeftTo,則其左邊緣將被設置為等于錨視圖。 您可以使用一組函數,如leftOf,rightOf,bottomOf將當前視圖設置到錨視圖的左側。
// view1 view2 view3 view4 view5
let params = RelativeLayoutParams.generateDefaultParams()
let params1 = RelativeLayoutParams(params)
params1.centerInHorizontal()
let params2 = RelativeLayoutParams(params)
params2.bottomTo(view4)
params2.topMargin = xxx
let params3 = RelativeLayoutParams(params)
param3.alignRightTo(view1)
let params4 = RelativeLayoutParams(params)
params4.centerInParent()
let params5 = RelativeLayoutParams(params)
params5.alignParentBottom()
// add view to parent
RelativeLayout中的約束
Constants
Description
ABOVE
將孩子的底部邊緣與另一個孩子的頂部邊緣對齊的規則。
ALIGN_BASELINE
將子項的基準與另一個子項的基準對齊的規則。
ALIGN_BOTTOM
將兒童的底部邊緣與另一個兒童的底部邊緣對齊的規則。
ALIGN_LEFT
將兒童的左邊緣與另一個兒童的左邊緣對齊的規則。
ALIGN_PARENT_BOTTOM
將子元素的底邊與其RelativeLayout父元素的底邊對齊的規則。
ALIGN_PARENT_LEFT
將子對象的左邊緣與其RelativeLayout父對象的左邊緣對齊的規則。
ALIGN_PARENT_RIGHT
將子對象的右邊緣與其RelativeLayout父對象的右邊緣對齊的規則。
ALIGN_PARENT_TOP
將子對象的頂邊與其RelativeLayout父對象的頂邊對齊的規則。
ALIGN_RIGHT
將孩子的右邊緣與另一個孩子的右邊緣對齊的規則。
ALIGN_TOP
將兒童的頂部邊緣與另一個兒童的頂部邊緣對齊的規則。
BELOW
將兒童的頂部邊緣與另一個兒童的底部邊緣對齊的規則。
CENTER_HORIZONTAL
將子元素相對于其RelativeLayout父元素的邊界進行水平居中的規則。
CENTER_IN_PARENT
使子對象相對于其RelativeLayout父對象的邊界居中的規則。
CENTER_VERTICAL
將子元素相對于其RelativeLayout父元素的邊界垂直居中的規則。
END_OF
將孩子的起始邊緣與另一個孩子的邊緣對齊的規則。
LEFT_OF
將兒童的右邊緣與另一個兒童的左邊緣對齊的規則。
RIGHT_OF
將兒童的左邊緣與另一個兒童的右邊緣對齊的規則。
Gravity
必須是以下常量值中的一個或多個(由“|”分隔)。
Constant
Value
Description
頂部
0x30
將對象推送到其容器的頂部,而不更改其大小。
底部
0x50
將對象推送到其容器的底部,而不更改其大小。
右
0x05
將對象推送到其容器的右側,而不更改其大小。
center_vertical
0x10
將對象放置在其容器的垂直中心,而不是更改其大小。
center_horizontal
0x01
將對象放置在其容器的水平中心,而不改變其大小。
中心
0x11
將對象放置在其容器的垂直和水平軸的中心,而不改變其大小。
Feedback
只要發生問題,請發送您的反饋。 你可以與我聯系:
- Email: lfk_dsk@hotmail.com
- Weibo:@亦狂亦俠_亦溫文
- Blog: 劉豐愷
License
MIT License
Copyright (c) 2017 JustWe
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.</code></pre>
來自:https://github.com/lfkdsk/JustUiKit/blob/master/README_ZH.md