我尝试在我的UIImageView
上添加一个子层,但它不起作用。
- 我有一组10个图像,命名范围从
photo0
到photo9
,我用5s的计时器显示它。 - 插座
shanghaiImage
是我的背景
我想添加一个梯度上这个马蒂像:透明(顶部)到黑色(底部)。
谢谢你的帮助:)
这是我在Swift 3中的代码。
这部分很好:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var shanghaiImage: UIImageView!
// beginning index
var _curentImageIndex:Int = 0
// number of images
let NUMBER_OF_IMAGES:Int = 10
// creation of the Timer
var _uiTimer:Timer?
override func viewDidLoad() {
super.viewDidLoad()
showPhoto(atIndex: _curentImageIndex)
}
// MARK TIMER ---------
func selectNewTimer(){
if let existingTimer:Timer = _uiTimer{
existingTimer.invalidate()
}
_uiTimer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(ViewController.showNextImage), userInfo: nil, repeats: true)
}
问题就出在这里。我不知道为什么不起作用。
// MARK PHOTO ---------
func showPhoto(atIndex index:Int){
let photoName:String = "photo\(index)"
shanghaiImage.image = UIImage(named: photoName)
let gradient = CAGradientLayer()
gradient.frame = shanghaiImage.bounds
let startColor = UIColor(colorLiteralRed: 0, green: 0, blue: 0, alpha: 1)
let endColor = UIColor.black
gradient.colors = [startColor, endColor]
shanghaiImage.layer.insertSublayer(gradient, at: 0)
_curentImageIndex = index
selectNewTimer()
}
func showNextImage() {
var nextPhotoIndex:Int = _curentImageIndex + 1
if nextPhotoIndex >= NUMBER_OF_IMAGES {
nextPhotoIndex = 0
}
showPhoto(atIndex: nextPhotoIndex)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
6条答案
按热度按时间f45qwnt81#
我建议在
UIImageView
的顶部放置一个带有渐变的UIView
:目标C:
uklbhaso2#
swift 3、swift 4和swift 5可以使用扩展名
为UIImageView的扩展名创建一个新文件,如UIImageView_extension.swift,并设置为以下代码:
UIImageView扩展了UIView,所以如果你将UIImageView更改为UIView,那么它将变得更加动态,即可以被扩展UIView的所有组件使用。所以我使用UIView而不是UIImageView。
在ViewController.swift中,您可以使用它:
这个函数需要一个框架,所以你只需要一个框架从视图或自己的imageView.始终认为像通用函数,然后你可以改变渐变颜色没有麻烦,在未来的其他视图.
igetnqfo3#
在Swift 5.1中,我创建了一个自定义类,它继承自UIImageView并支持多种渐变配置。
ckocjqey4#
这应该是正确答案
bweufnob5#
如何使用
5lhxktic6#
这些解决方案对我来说并不适用。这个答案的灵感来自this。我有一个IBOutlet,它就像,
然后我添加了这段代码。
它的工作原理和我想要的一样。最重要的一点是添加内容到渐变层。