我一直在尝试将自定义背景图片添加到我的应用中。 我用过这里介绍的方法: How to fill background image of an UIView
这些代码在普通的UIViewController和UITableViewController中都成功,但在UICollectionViewController中失败了。它只是全黑。
据我了解,UITableViewController具有与UICollectionViewController类似的结构。我比较了这两个控制器的设置,它们都是相同的(在视图部分)。为什么代码在一个上工作而在另一个上不起作用?
答案 0 :(得分:9)
实现此目的的最佳方法是通过viewDidLoad中的代码实现CollectionView
let bgImage = UIImageView();
bgImage.image = UIImage(named: "bg4");
bgImage.contentMode = .ScaleToFill
self.collectionView?.backgroundView = bgImage
答案 1 :(得分:4)
正在开展uicollectionview
div.mce-fullscreen {
z-index: 1050;
}
答案 2 :(得分:1)
我的一位朋友给了我解决方案。
诀窍是将集合视图背景设置为clear而不是default。 我已将所有视图设置为默认值,因此我认为它在集合视图中应该是相同的。
但是,如果仅在集合视图中出现默认背景为黑色,而在其他情况下,默认背景是否清晰?这让我很困惑。
答案 3 :(得分:0)
如果您要为self.view指定背景颜色,请尝试将其指定给self.collectionView。
答案 4 :(得分:0)
// Create a Programmatically UICollectionview in iOS And Set a UICollectionView Background Image
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];
_collectionView=[[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:layout];
[_collectionView setDataSource:self];
[_collectionView setDelegate:self];
[_collectionView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"tiger"]]];
[_collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cellIdentifier"];
[self.view addSubview:_collectionView];
答案 5 :(得分:0)
这将比背景颜色完美。
- (void)viewDidLoad
{
[super viewDidLoad];
self.collectionView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imageName"]];
}
答案 6 :(得分:0)
尝试此操作以设置UICollectionView Swift 4或更高版本的背景图片
1。在主类之外的代码中添加此扩展名
extension UICollectionView {
func setEmptyMessage(_ message: String,_ img:UIImage) {
let image = UIImageView()
image.contentMode = .scaleAspectFit
image.image = img
let messageLabel = UILabel()
messageLabel.text = message
messageLabel.font = UIFont.boldSystemFont(ofSize: 20)
messageLabel.textColor = .gray
messageLabel.numberOfLines = 0
messageLabel.textAlignment = .center
messageLabel.sizeToFit()
let mainView = UIView()
mainView.addSubview(image)
mainView.addSubview(messageLabel)
//Auto Layout
image.translatesAutoresizingMaskIntoConstraints = false
image.centerXAnchor.constraint(equalTo: mainView.centerXAnchor).isActive = true
image.centerYAnchor.constraint(equalTo: mainView.centerYAnchor , constant: -40).isActive = true
messageLabel.translatesAutoresizingMaskIntoConstraints = false
messageLabel.topAnchor.constraint(equalTo: image.bottomAnchor, constant: 20).isActive = true
messageLabel.leadingAnchor.constraint(equalTo: mainView.leadingAnchor, constant: 10).isActive = true
messageLabel.trailingAnchor.constraint(equalTo: mainView.trailingAnchor, constant: 10).isActive = true
self.backgroundView = mainView
}
func restoreBackgroundView() {
self.backgroundView = nil
}
}
2。使用方法
if Data.count == 0 {
self.collectionView.setEmptyMessage("set the message", UIImage(named: "imageName"))
} else {
self.collectionView.restoreBackgroundView()
}