Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
@邻家的橘猫
Iosswift
提交
6b3d9f91
I
Iosswift
项目概览
@邻家的橘猫
/
Iosswift
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
I
Iosswift
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
6b3d9f91
编写于
3月 04, 2019
作者:
J
John Hampton
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Adds property observers
上级
4823baec
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
53 addition
and
18 deletion
+53
-18
iOSTemplate/Base.lproj/Main.storyboard
iOSTemplate/Base.lproj/Main.storyboard
+12
-4
iOSTemplate/RatingControl.swift
iOSTemplate/RatingControl.swift
+41
-14
未找到文件。
iOSTemplate/Base.lproj/Main.storyboard
浏览文件 @
6b3d9f91
...
@@ -18,8 +18,8 @@
...
@@ -18,8 +18,8 @@
<rect
key=
"frame"
x=
"0.0"
y=
"0.0"
width=
"375"
height=
"667"
/>
<rect
key=
"frame"
x=
"0.0"
y=
"0.0"
width=
"375"
height=
"667"
/>
<autoresizingMask
key=
"autoresizingMask"
widthSizable=
"YES"
heightSizable=
"YES"
/>
<autoresizingMask
key=
"autoresizingMask"
widthSizable=
"YES"
heightSizable=
"YES"
/>
<subviews>
<subviews>
<stackView
opaque=
"NO"
contentMode=
"scaleToFill"
a
mbiguous=
"YES"
a
xis=
"vertical"
alignment=
"top"
spacing=
"8"
translatesAutoresizingMaskIntoConstraints=
"NO"
id=
"l36-fK-dfQ"
>
<stackView
opaque=
"NO"
contentMode=
"scaleToFill"
axis=
"vertical"
alignment=
"top"
spacing=
"8"
translatesAutoresizingMaskIntoConstraints=
"NO"
id=
"l36-fK-dfQ"
>
<rect
key=
"frame"
x=
"0.0"
y=
"40"
width=
"375"
height=
"5
4
2.5"
/>
<rect
key=
"frame"
x=
"0.0"
y=
"40"
width=
"375"
height=
"5
3
2.5"
/>
<subviews>
<subviews>
<label
opaque=
"NO"
userInteractionEnabled=
"NO"
contentMode=
"left"
horizontalHuggingPriority=
"251"
verticalHuggingPriority=
"251"
text=
"Meal Name"
textAlignment=
"natural"
lineBreakMode=
"tailTruncation"
baselineAdjustment=
"alignBaselines"
adjustsFontSizeToFit=
"NO"
translatesAutoresizingMaskIntoConstraints=
"NO"
id=
"n9u-9b-TSl"
>
<label
opaque=
"NO"
userInteractionEnabled=
"NO"
contentMode=
"left"
horizontalHuggingPriority=
"251"
verticalHuggingPriority=
"251"
text=
"Meal Name"
textAlignment=
"natural"
lineBreakMode=
"tailTruncation"
baselineAdjustment=
"alignBaselines"
adjustsFontSizeToFit=
"NO"
translatesAutoresizingMaskIntoConstraints=
"NO"
id=
"n9u-9b-TSl"
>
<rect
key=
"frame"
x=
"0.0"
y=
"0.0"
width=
"86.5"
height=
"20.5"
/>
<rect
key=
"frame"
x=
"0.0"
y=
"0.0"
width=
"86.5"
height=
"20.5"
/>
...
@@ -50,8 +50,16 @@
...
@@ -50,8 +50,16 @@
<outletCollection
property=
"gestureRecognizers"
destination=
"UAM-fK-D64"
appends=
"YES"
id=
"uEG-WL-m3E"
/>
<outletCollection
property=
"gestureRecognizers"
destination=
"UAM-fK-D64"
appends=
"YES"
id=
"uEG-WL-m3E"
/>
</connections>
</connections>
</imageView>
</imageView>
<stackView
opaque=
"NO"
contentMode=
"scaleToFill"
ambiguous=
"YES"
translatesAutoresizingMaskIntoConstraints=
"NO"
id=
"5FE-RR-A0X"
customClass=
"RatingControl"
customModule=
"iOSTemplate"
customModuleProvider=
"target"
>
<stackView
opaque=
"NO"
contentMode=
"scaleToFill"
spacing=
"8"
translatesAutoresizingMaskIntoConstraints=
"NO"
id=
"5FE-RR-A0X"
customClass=
"RatingControl"
customModule=
"iOSTemplate"
customModuleProvider=
"target"
>
<rect
key=
"frame"
x=
"0.0"
y=
"432.5"
width=
"200"
height=
"110"
/>
<rect
key=
"frame"
x=
"0.0"
y=
"432.5"
width=
"132"
height=
"100"
/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute
type=
"size"
keyPath=
"starSize"
>
<size
key=
"value"
width=
"20"
height=
"100"
/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute
type=
"number"
keyPath=
"starCount"
>
<integer
key=
"value"
value=
"5"
/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</stackView>
</stackView>
</subviews>
</subviews>
<constraints>
<constraints>
...
...
iOSTemplate/RatingControl.swift
浏览文件 @
6b3d9f91
...
@@ -7,7 +7,22 @@
...
@@ -7,7 +7,22 @@
import
UIKit
import
UIKit
class
RatingControl
:
UIStackView
{
@IBDesignable
class
RatingControl
:
UIStackView
{
// MARK: Properties
private
var
ratingButtons
=
[
UIButton
]()
@IBInspectable
var
starSize
:
CGSize
=
CGSize
(
width
:
44.0
,
height
:
44.0
)
{
didSet
{
setupButtons
()
}
}
@IBInspectable
var
starCount
:
Int
=
5
{
didSet
{
setupButtons
()
}
}
var
rating
=
0
// MARK: Initialization
// MARK: Initialization
override
init
(
frame
:
CGRect
)
{
override
init
(
frame
:
CGRect
)
{
...
@@ -27,20 +42,32 @@ class RatingControl: UIStackView {
...
@@ -27,20 +42,32 @@ class RatingControl: UIStackView {
// MARK: Private Methods
// MARK: Private Methods
private
func
setupButtons
()
{
private
func
setupButtons
()
{
// clear any existing buttons
for
button
in
ratingButtons
{
removeArrangedSubview
(
button
)
button
.
removeFromSuperview
()
}
ratingButtons
.
removeAll
()
for
_
in
0
..<
starCount
{
// Create the button
// Create the button
let
button
=
UIButton
()
let
button
=
UIButton
()
button
.
backgroundColor
=
UIColor
.
red
button
.
backgroundColor
=
UIColor
.
red
// Add constraints
// Add constraints
button
.
translatesAutoresizingMaskIntoConstraints
=
false
button
.
translatesAutoresizingMaskIntoConstraints
=
false
button
.
heightAnchor
.
constraint
(
equalToConstant
:
44.0
)
.
isActive
=
true
button
.
heightAnchor
.
constraint
(
equalToConstant
:
starSize
.
height
)
.
isActive
=
true
button
.
widthAnchor
.
constraint
(
equalToConstant
:
44.0
)
.
isActive
=
true
button
.
widthAnchor
.
constraint
(
equalToConstant
:
starSize
.
width
)
.
isActive
=
true
// Setup the button action
// Setup the button action
button
.
addTarget
(
self
,
action
:
#selector(
RatingControl.ratingButtonTapped(button:)
)
,
for
:
.
touchUpInside
)
button
.
addTarget
(
self
,
action
:
#selector(
RatingControl.ratingButtonTapped(button:)
)
,
for
:
.
touchUpInside
)
// Add the button to the stack
// Add the button to the stack
addArrangedSubview
(
button
)
addArrangedSubview
(
button
)
// Add the new button to the rating button array
ratingButtons
.
append
(
button
)
}
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录