由于在不同视图上使用带有图像的自定义视图,应用程序崩溃

时间:2015-08-22 05:59:37

标签: ios swift

我的应用程序可以正常使用iOS v7.0以上的所有iOS模拟器,并且还可以处理大部分设备,但它会崩溃到iPod touch iOS 8.4。我无法识别我的应用程序的问题,因为当我使用Xcode 6.3连接此设备并测试我的应用程序时,它的工作正常。

所以我的应用程序在两种不同情况下崩溃到iPod touch iOS V8.4:

  • 将应用程序从Test fairy下载到设备并打开我的屏幕 我正在使用我的自定义视图

  • 使用Xcode连接设备并将应用程序运行到设备中(已连接
    即使在我使用自定义视图的屏幕上,设备应用也能正常工作) 然后断开设备,再次运行应用程序,但这次我的应用程序崩溃 当我通过自定义视图到达屏幕时。

自定义视图代码:

import UIKit

class OutfitView:UIView  {
    var screenSize = SCREEN_SIZE()
    let bigScaleImageView: UIImageView!
    let rigthSideImageOne: UIImageView!
    let rigthSideImageTwo: UIImageView!
    let rigthSideImageThree: UIImageView!
    let oufitNameLbl: UILabel!
    let oufitItemCountLbl: UILabel!
    let likeBtn: UIButton!
    let likeCountBtn: UIButton!
    let rigthSideFooterLbl:UILabel!
    let moreImageLbl: UILabel!
    override init(frame: CGRect ) {

        var yposition = CGFloat(0)
        oufitNameLbl =  UILabel(frame: CGRect(x: 0, y: yposition, width: (screenSize.width - 20) * (70/100), height: 30))
        oufitNameLbl.text = "Outfit Name"
        oufitNameLbl.textAlignment = .Left
        oufitNameLbl.textColor = UIColor.blackColor()
        oufitNameLbl.font = UIFont.systemFontOfSize(18)
        oufitItemCountLbl = UILabel(frame: CGRect(x: oufitNameLbl.frame.width, y: yposition, width: (screenSize.width - 20) * (30/100), height: 30))
        oufitItemCountLbl.text = "8 Items"
        oufitItemCountLbl.textAlignment = .Right
        oufitItemCountLbl.textColor = UIColor.grayColor()
        oufitItemCountLbl.font = UIFont.systemFontOfSize(14)

        yposition += oufitNameLbl.frame.height

        var height =  frame.height - 80

        bigScaleImageView = UIImageView(frame: CGRect(x: 0, y: yposition, width: (screenSize.width - 20) * (70/100) - 4, height: height))
        bigScaleImageView.contentMode = UIViewContentMode.ScaleAspectFit
        bigScaleImageView.layer.borderWidth = 2
        bigScaleImageView.layer.borderColor = UIColor.whiteColor().CGColor
        bigScaleImageView.backgroundColor = UIColor.whiteColor()

        rigthSideImageOne = UIImageView(frame: CGRect(x: bigScaleImageView.frame.size.width+4, y: yposition, width: (screenSize.width - 20) * (30/100), height: (height - 8)/3))
        rigthSideImageOne.layer.borderWidth = 2
        rigthSideImageOne.layer.borderColor = UIColor.whiteColor().CGColor
        rigthSideImageOne.contentMode = UIViewContentMode.ScaleAspectFit
        rigthSideImageOne.backgroundColor = UIColor.whiteColor()

        rigthSideImageTwo = UIImageView(frame: CGRect(x: bigScaleImageView.frame.size.width+4, y: yposition + rigthSideImageOne.frame.height+4, width: (screenSize.width - 20) * (30/100), height: (height - 8)/3))
        rigthSideImageTwo.layer.borderWidth = 2
        rigthSideImageTwo.layer.borderColor = UIColor.whiteColor().CGColor
        rigthSideImageTwo.contentMode = UIViewContentMode.ScaleAspectFit
        rigthSideImageTwo.backgroundColor = UIColor.whiteColor()

        rigthSideImageThree = UIImageView(frame: CGRect(x: bigScaleImageView.frame.size.width+4, y:yposition + (rigthSideImageOne.frame.height + rigthSideImageTwo.frame.height)+8, width: (screenSize.width - 20) * (30/100), height: (height - 8)/3))
        rigthSideImageThree.layer.borderWidth = 2
        rigthSideImageThree.layer.borderColor = UIColor.whiteColor().CGColor
        rigthSideImageThree.contentMode = UIViewContentMode.ScaleAspectFit
        rigthSideImageThree.backgroundColor = UIColor.whiteColor()

        moreImageLbl = UILabel(frame: CGRect(x: bigScaleImageView.frame.size.width+4, y: yposition + (rigthSideImageOne.frame.height + rigthSideImageTwo.frame.height)+8, width: (screenSize.width - 20) * (30/100), height: (height - 8)/3))
        moreImageLbl.text = "+4"
        moreImageLbl.textAlignment = .Center
        moreImageLbl.textColor = UIColor.whiteColor()
        moreImageLbl.backgroundColor = Utilities.getGSBlackColor(alphaValue: CGFloat(0.6))

        yposition += bigScaleImageView.frame.height

        let editLikeView = UIView(frame: CGRect(x: 0, y: yposition, width: screenSize.width - 20, height: 50))
        likeBtn = UIButton(frame: CGRect(x: 0, y: 8, width: 15, height: 15))
        likeBtn.setTitle("", forState: .Normal)
        likeBtn.setTitle("", forState: .Selected)
        //likeBtn.backgroundColor = UIColor.whiteColor()
        var image = UIImage(named: "gray_heart")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
        likeBtn.setImage(image, forState: .Normal)
        likeBtn.setTitleColor(UIColor.whiteColor(), forState: .Normal)
        likeBtn.setTitleColor(Utilities.getGSRedColor(), forState: .Selected)
        likeBtn.titleLabel?.font = UIFont.systemFontOfSize(14)
        likeBtn.titleLabel?.textAlignment = .Left
        likeBtn.userInteractionEnabled = true
        editLikeView.addSubview(likeBtn)

        likeCountBtn = UIButton(frame: CGRect(x: 13, y: 0, width: 30, height: 30))
        likeCountBtn.setTitle("28", forState: .Normal)
        likeCountBtn.setTitle("28", forState: .Selected)
        likeCountBtn.setTitleColor(Utilities.getMasterColor(), forState: .Normal)
        likeCountBtn.setTitleColor(Utilities.getMasterColor(), forState: .Selected)
        likeCountBtn.titleLabel?.font = UIFont.systemFontOfSize(14)
        likeCountBtn.titleLabel?.textAlignment = .Left
        likeCountBtn.userInteractionEnabled = true
        editLikeView.addSubview(likeCountBtn)

        rigthSideFooterLbl = UILabel(frame: CGRect(x: (screenSize.width-20) - ((screenSize.width - 20) * (0.80)), y: 0, width:(screenSize.width - 20) * (0.80), height: 30) )
        rigthSideFooterLbl.text = "CreatedBy:@XXXXXXXXX"
        rigthSideFooterLbl.textAlignment = .Right
        rigthSideFooterLbl.textColor = UIColor.blackColor()
        rigthSideFooterLbl.font = UIFont.systemFontOfSize(16)
        editLikeView.addSubview(rigthSideFooterLbl)

        super.init(frame: frame)
        self.addSubview(oufitNameLbl)
        self.addSubview(oufitItemCountLbl)

        self.addSubview(editLikeView)
        self.addSubview(bigScaleImageView)
        self.addSubview(rigthSideImageOne)
        self.addSubview(rigthSideImageTwo)
        self.addSubview(rigthSideImageThree)
        self.addSubview(moreImageLbl)

    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

我使用自定义视图的代码:

for i in 1...3{
    var outfitView = OutfitView(frame: CGRect(x: 10, y: yposition, width: screenSize.width - 20, height: 330))
    outfitView.bigScaleImageView.image = image1
    outfitView.rigthSideImageOne.image = image2
    outfitView.rigthSideImageTwo.image = image3
    outfitView.rigthSideImageThree.image = image4
    itemDetailView.frame.size.height += (outfitView.frame.height + 10 )
    yposition += outfitView.frame.height + 10
    itemDetailView.addSubview(outfitView)
}

0 个答案:

没有答案