【问题标题】:Add "filter" buttons to Scrollview将“过滤器”按钮添加到 Scrollview
【发布时间】:2017-04-27 05:52:53
【问题描述】:

我是 swift 新手,我正在通过重新创建 Instagram 类型的应用程序来学习这门语言。我的过滤器有问题。当我在模拟器上运行它时,除了滚动视图外,一切正常。它应该像在 Instagram 应用程序上一样显示所有过滤器。但它只显示 1 个过滤器(CIFilternames 的最后一个)我怎样才能将其他过滤器作为按钮旁边的一个按钮?

in the Scrollview should be more filters than one

 var CIFilterNames = [
    "CIPhotoEffectChrome",
    "CIPhotoEffectFade",
    "CIPhotoEffectInstant",
    "CIPhotoEffectNoir",
    "CIPhotoEffectProcess",
    "CIPhotoEffectTonal",
    "CIPhotoEffectTransfer",
    "CISepiaTone",
    "CIPhotoEffectInstant",
        ]




override func viewDidLoad() {
    super.viewDidLoad()


    imageview.image = receivedImage

    var xCoord: CGFloat = 5
    let yCoord: CGFloat = 10
    let buttonWidth:CGFloat = 70
    let gapBetweenButtons: CGFloat = 5

    var itemCount = 0

    for i in 0..<CIFilterNames.count {
        itemCount = i

        // Button properties
        let filterButton = UIButton(type: .custom)
        filterButton.frame = CGRect(x: 5, y: 10, width: 70, height: 70)
        filterButton.tag = itemCount
        filterButton.addTarget(self, action: #selector(secendTestViewController.filterButtonTapped(sender:)), for: .touchUpInside)
        filterButton.layer.cornerRadius = 6
        filterButton.clipsToBounds = true




        // Create filters for each button
        let ciContext = CIContext(options: nil)
        let coreImage = CIImage(image: receivedImage)
        let filter = CIFilter(name: "\(CIFilterNames[i])" )
        filter!.setDefaults()
        filter!.setValue(coreImage, forKey: kCIInputImageKey)
        let filteredImageData = filter!.value(forKey: kCIOutputImageKey) as! CIImage
        let filteredImageRef = ciContext.createCGImage(filteredImageData, from: filteredImageData.extent)
        let imageForButton = UIImage(cgImage: filteredImageRef!);

        filterButton.setBackgroundImage(imageForButton, for: .normal)

        // Add Buttons in the Scroll View
        xCoord += buttonWidth + gapBetweenButtons

        filterScrollView.addSubview(filterButton)
    } // END FOR LOOP

    // Resize Scroll View
   filterScrollView.contentSize = CGSize(buttonWidth * CGFloat(itemCount + 2), yCoord)


    }



func filterButtonTapped(sender: UIButton) {
    let button = sender as UIButton

    imageToFilter.image = button.backgroundImage(for: UIControlState.normal)
}

【问题讨论】:

  • 我认为您需要更改 filterButton.frame
  • 设置CGRect(x: xCoord, y: 10, width: 70, height: 70)
  • 你为什么不用UICollectionView 来代替呢?它是为您想要达到的目的而设计的!

标签: ios swift xcode uiscrollview swift3


【解决方案1】:

我认为您的问题是 filterButton 框架。 试试这个

filterButton.frame = CGRect(x: xCoord, y: 10, width: 70, height: 70)

【讨论】:

  • 非常感谢!!!你救了我的一天!我已经尝试解决这个问题两天了!我现在明白我的错误了,哈哈,谢谢!
  • 很高兴为您提供帮助
猜你喜欢
  • 1970-01-01
  • 2011-07-03
  • 2018-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多