- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对Swift编码有点陌生,我想通过找到一些布局来训练自己,并尝试使用AutoLayout实现它们。
这是我试图实现的屏幕截图
https://i.imgur.com/9yzvnzp.png
这里需要的行为是在滚动时图片会逐渐消失,标题应该设置成这样
https://i.imgur.com/bLhyTGs.png
有人能帮我怎么做吗?
我应该使用滚动视图吗?UITableView?u集合视图?
最佳答案
我正在开发一个类似的应用程序。
所以,你要做的第一件事是为背景创建一个UIView
,也就是说,蓝色的部分显示了喷射器。此视图可以占据整个视图控制器。通过UIViewController
将其连接到您的IBOutlet
并将其命名为backgroundView
。
接下来,我们要在UIScrollView
上放置一个backgroundView
。此滚动视图应限制在超级视图的顶部、底部、前边和后边,以便覆盖整个视图控制器的框架。通过UIScrollView
将此UIViewController
连接到您的IBOutlet
并将其命名为scrollView
。另外,确保scrollView
的backgroundColor
设置为clear
。这样,我们就可以在backgroundView
下面看到scrollView
。
在UIViewController
中,您需要将scrollView
的委托设置为self
内部的viewDidLoad
。您的UIViewController
代码现在应该如下所示:
class SquirtleViewController: UIViewController {
@IBOutlet var backgroundView: UIView!
@IBOutlet var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
}
}
extension SquirtleViewController: UIScrollViewDelegate {
}
scrollView
设置委托方法。这些将帮助我们知道滚动视图何时开始滚动到
SquirtleViewController
的顶部。
scrollView
有一个清晰的背景,实际上并没有向用户显示任何内容。这就是我们现在想要的。我们希望
scrollView
的顶部是清晰的,以便我们可以看到它后面的
backgroundView
,而
scrollView
的底部是另一个视图,即显示
STATS
、
EVOLUTIONS
、
MOVES
、
HP
等的“内容视图”。
UIView
作为
scrollView
的子视图。通过
SquirtleViewController
将其连接到
IBOutlet
并将其命名为
contentView
。
contentView
的上边缘和
scrollView
的上边缘之间创建一个约束。此约束的常数必须等于
backgroundView
内容的高度。这样,我们的
contentView
就不会掩盖我们想从
backgroundView
看到的东西。我们还应该将这个高度保存为
backgroundViewContentHeight
,以便以后可以引用它。
contentView
的
leading
、
trailing
和
bottom
约束与它的superview的约束相等,即
scrollView
。这些不需要通过
IBOutlet
s连接。
contentView
a
height
和
width
约束,并通过
contentViewHeight
将它们分别连接为
contentViewWidth
和
SquirtleViewController
。这将帮助我们以后设置
IBOutlet
的
contentSize
。
class SquirtleViewController: UIViewController {
@IBOutlet var backgroundView: UIView!
@IBOutlet var scrollView: UIScrollView!
@IBOutlet var contentView: UIView!
//New lines of code
//Our constraints
@IBOutlet var contentViewTop: NSLayoutConstraint!
@IBOutlet var contentViewHeight: NSLayoutConstraint!
@IBOutlet var contentViewWidth: NSLayoutConstraint!
var backgroundViewContentHeight = 400
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
}
}
extension SquirtleViewController: UIScrollViewDelegate {
}
scrollView
布局其子视图时,我们要设置
SquirtleViewController
和
constant
的
contentViewHeight
属性。这将为我们的
contentViewWidth
设置
contentSize
。我们希望我们的
scrollView
只是我们的
contentViewWidth
宽度的大小。不过,我们的
SquirtleViewController
的
view
会有点不同,因为这取决于我们的
contentViewHeight
子视图的高度。对于这个例子,我们会说
constant
的
contentView
应该是1200。代码现在应该如下所示:
class SquirtleViewController: UIViewController {
@IBOutlet var backgroundView: UIView!
@IBOutlet var scrollView: UIScrollView!
@IBOutlet var contentView: UIView!
//Our constraints
@IBOutlet var contentViewTop: NSLayoutConstraint!
@IBOutlet var contentViewHeight: NSLayoutConstraint!
@IBOutlet var contentViewWidth: NSLayoutConstraint!
var backgroundViewContentHeight = 400
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
}
//New lines of code
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
contentViewWidth.constant = view.frame.width
contentViewHeight.constant = 1200
}
}
extension SquirtleViewController: UIScrollViewDelegate {
}
contentViewHeight
和
constant
中,以便显示pokemon(
backgroundView
)和pokemon的统计信息(
contentView
)。但是,您仍然需要知道如何根据我们滚动了多少
backgroundView
来更改
contentView
的内容。这就是
backgroundView
帮助我们解决问题的地方。
scrollView
中有一个方法,每当我们的
UIScrollViewDelegate
的
UIScrollViewDelegate
发生变化时都会调用它。这基本上意味着每次我们更改
scrollView
滚动的量时,都会调用此方法。
contentOffset.y
's
scrollView
接近我们的
scrollView
内容的高度时,我们可以淡出喷射器的图像并淡入到一个简单地称为“喷射器”的
contentOffset.y
中(如您的示例)。
backgroundView
的喷射器作为
UILabel
的子视图,并通过
UIImage
作为
contentView
连接它。
IBOutlet
的框架应该部分位于
pokemonImageView
之外(如您的示例中所示)。如果这样做,请确保
pokemonImageView
的
contentView
属性设置为
contentView
。
clipsToBounds
作为
false
的子视图,并通过
UILabel
as
backgroundView
将其连接到
SquirtleViewController
。当我们的
IBOutlet
视图加载时,我们应该将
pokemonNameLabel
设置为零,以便最初隐藏它。
class SquirtleViewController: UIViewController {
@IBOutlet var backgroundView: UIView!
//New line of code
@IBOutlet var pokemonNameLabel: UILabel!
@IBOutlet var scrollView: UIScrollView!
@IBOutlet var contentView: UIView!
//New line of code
@IBOutlet var pokemonImageView: UIImageView!
//Our constraints
@IBOutlet var contentViewTop: NSLayoutConstraint!
@IBOutlet var contentViewHeight: NSLayoutConstraint!
@IBOutlet var contentViewWidth: NSLayoutConstraint!
var backgroundViewContentHeight = 400
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
//New line of code
pokemonNameLabel.alpha = 0
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
contentViewWidth.constant = view.frame.width
contentViewHeight.constant = 1200
}
}
extension SquirtleViewController: UIScrollViewDelegate {
}
SquirtleViewController
方法。这个方法将告诉我们
pokemonNameLabel.alpha
的
scrollViewDidScroll
属性,以便我们知道滚动了多少。随着这个数字的增加,我们的α应该减少到零,我们的α应该增加到一。
scrollView
除以
contentOffset.y
的高度减去
pokemonImageView
的高度。然后我们可以使用这个十进制设置我们各自的字母
pokemonNameLabel
和
scrollView.contentOffset.y
。
class SquirtleViewController: UIViewController {
@IBOutlet var backgroundView: UIView!
//New line of code
@IBOutlet var pokemonNameLabel: UILabel!
@IBOutlet var scrollView: UIScrollView!
@IBOutlet var contentView: UIView!
//New line of code
@IBOutlet var pokemonImageView: UIImageView!
//Our constraints
@IBOutlet var contentViewTop: NSLayoutConstraint!
@IBOutlet var contentViewHeight: NSLayoutConstraint!
@IBOutlet var contentViewWidth: NSLayoutConstraint!
var backgroundViewContentHeight = 400
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
//New line of code
pokemonNameLabel.alpha = 0
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
contentViewWidth.constant = view.frame.width
contentViewHeight.constant = 1200
}
}
extension SquirtleViewController: UIScrollViewDelegate {
func scrollViewDidScroll(_ scrollView: UIScrollView) {
//Subtracting contentView.frame.height from scrollView.frame.height
let alphaDecimal = scrollView.contentOffset.y / (backgroundViewContentHeight - pokemonNameLabel.frame.height)
pokemonNameLabel.alpha = alphaDecimal
pokemonImageView.alpha = 1 - alphaDecimal
}
}
backgroundView
收缩时,我们的
pokemonNameLabel
将淡出,而我们的
pokemonImageView
将淡入。两者之间会有一个点α值为0.5。您可以随意使用这个
pokemonNameLabel
方法,使其最适合您。
关于swift - Swift-显示带有动画的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56992451/
我附上了一个我尝试使用 html/css 实现的示例(如果您看不到图像:名字和姓氏,然后第二行是职位描述)。我希望所有文本(两行)在一个 div 中强制对齐(左和右),但我不确定这是否可能。我尝试了一
我想使两个 h1 元素成为 div 上的标题/页眉。所以每个都在特定的 div 之上。 Youtube Achievements
我想让每个 EditText 对象都有自己的标题,就像 Pure Android 指南中那样 (screenshot) 这个东西有原生支持吗?我想他们也可能会使用带有部分的 ListView ,但这对
是否可以像 UITableView headerView 一样创建 UICollectionView 标题 View ?我的意思是整个集合 View 的标题 View ,而不是每个部分的重复 View
我一直在遵循有关排版的 Google 官方 Material 设计指南 (http://www.google.com/design/spec/style/typography.html),但我发现它们
我目前正在尝试找到可以帮助我从视频文件中提取元数据或信息的 python 库,例如 [ mp4, Mkv, Avi, WebM, mpg ] 格式为例。 我主要从视频文件中提取的主要数据是 [标题、描
你好, 这是我正在尝试做的: 将每个缩略图的内容(img + 标题)居中。我的 img 必须是 span3,标题必须是 span4。 这是我的问题: 我可以获取内容中心,或者标题 float 在 im
我有一个带有导航栏的应用程序,可以从一个 View Controller 导航到下一个 View Controller 。在某些模拟器和设备上导航到下一个 View Controller 时,后退按钮
我遇到了一些非常酷的 t-sql,可以从一个 t-sql 查询中的选定行生成一个逗号分隔的列值列表: SELECT @MyList = ISNULL(@MyList,'') + Title + ',
请确保将 HTML heading 标签只用于标题。不要仅仅是为了生成粗体或的文本而使用标题。 搜索引擎使用标题为您的网页的结构和内容编制索引。 因为用户可以通过标题来快速浏览您的网页,所以用标
我正在使用 wkhtmltopdf 将 html 转换为 pdf。 我想在每个页面中添加标题,但它只显示在第一页(目录)中。 我使用的命令是 "C:\Program Files\wkhtmltopdf
如何使用 ggplot2 显示观察的方向(标题)?有没有办法调整shape=17 (三角形)以便它“指向”下一次观察? 示例代码 library(ggplot2) dat % pivot_wide
我尝试在 cocoa 应用程序中显示/隐藏标题栏。我使用以下代码: if ([window styleMask]==NSResizableWindowMask) { [wind
我有这样的 HTML 标题 http://s1.postimg.org/4ebyk3qwv/image.png 当我编写这段代码时: document.getElementById("TL85_1_
我叫麦克。谢谢你的帮助。 在Wordpress中,我们已经设计了我们的网站,以便在Facebook调试器中og数据尽可能接近youtube。尽管如此,在Facebook上共享视频的方式还是不同的。尽管
从 web 应用程序的客户端,我点击了服务器端路由,它只是第三方 API 的包装器。使用分派(dispatch),我试图让服务器端请求返回 exact header 和第三方 API 对客户端 AJA
从 web 应用程序的客户端,我点击了服务器端路由,它只是第三方 API 的包装器。使用分派(dispatch),我试图让服务器端请求返回 exact header 和第三方 API 对客户端 AJA
我是 SAPUI5 的新手,在导航、侧边栏和标题方面遇到一些问题。我想开发一个带有标题和侧边栏的应用程序。我为此使用“ToolPage”。每个页面都包含工具页,如下所示:
我最近在为客户做的项目中被介绍给Go。他们已经建立了代码库,需要进行一些更改。 我注意到所有的方法,结构等等都有一些奇怪的类似于标题的注释,如下所示: // SomeType ... type Som
我创建了一个采用整个屏幕布局的标题布局(xml 文件)... 我还创建了一个 listView 并将此 header_layout 添加到 listView 中: LayoutInflater inf
我是一名优秀的程序员,十分优秀!