无法为UICollectionView设置背景图像

时间:2015-07-05 20:08:53

标签: ios objective-c swift uicollectionview uibackgroundcolor

我一直在尝试将自定义背景图片添加到我的应用中。 我用过这里介绍的方法: How to fill background image of an UIView

这些代码在普通的UIViewController和UITableViewController中都成功,但在UICollectionViewController中失败了。它只是全黑。

据我了解,UITableViewController具有与UICollectionViewController类似的结构。我比较了这两个控制器的设置,它们都是相同的(在视图部分)。为什么代码在一个上工作而在另一个上不起作用?

7 个答案:

答案 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()
}