Добавьте изображение в UIActivityController

#ios #swift #uiimage #uiactivitycontroller

Вопрос:

Как добавить изображение в обведенную часть UIActivityController ? Мне не нужно, чтобы это было включено в раздел «Общий доступ», я хочу добавить его прямо там. Я пытался:

ac.tabBarItem.image = UIImage(named: "uLogo")

 let items:[Any] = [UIImage(named: "uLogo"), "What do you think of my Take on the uSTADIUM App? Sign up so you can bet with or against me!", url]
let ac = UIActivityViewController(activityItems: items, applicationActivities: [])
 

Что не работает, так что не знаю, как это сделать

введите описание изображения здесь

Комментарии:

1. Посмотрите, что произойдет после включения URL-адреса в activityItems .

2. @ElTomato Да, я пробовал, надо было сказать об этом в посте. Результат тот же, но изображение также доступно по ссылке

3. Ну, это работает для меня, если у меня есть массив объектов изображений и URL, как activityItems .

4. @ElTomato это странно. Для меня он разделяет изображение, но изображение не отображается в той обведенной части снимка экрана

5. @ElTomato можете ли вы опубликовать свой массив действий?

Ответ №1:

вы можете попробовать обычай UIActivityViewController

 class ActivityCtrl: UIActivityViewController{
    
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        if let cls = NSClassFromString("LPImageView"), let base = getBase(for: view, cls){
            for sub in base.subviews{
                if let img = sub as? UIImageView{
                    img.image = UIImage(named: "uLogo.png")
                    break
                }
            }
        }
    }
    
    
    
    func getBase(for v: UIView?, _ cls: AnyClass) -> UIView?{
           guard let vue = v else{ return nil }
           var result: UIView?
           for sub in vue.subviews{
               if sub.isKind(of: cls){
                   return sub
               }
               else {
                   result = getBase(for: sub, cls)
                   if result != nil{
                       return result
                   }
               }
           }
           return result
       }
}
 

использование:

 if let url = URL(string: "https://www.baidu.com"), let img = UIImage(named: "uLogo"){
            let items:[Any] = [img, "What do you think of my Take on the uSTADIUM App? Sign up so you can bet with or against me!", url]
            let ac = ActivityCtrl(activityItems: items, applicationActivities: [])
            present(ac, animated: true){ }
        }
 

Результат:

999


Откуда я знаю LPImageView ?

888

Комментарии:

1. странно, это не работало на меня

2. вы можете проверить view hierarchy , чтобы выполнить отладку

3. вам нужно обратить внимание на изображение src uLogo.png

4. да, я заметил изображение src, оно должно быть png?

5. нет, просто обычный образ