Beam: the open source Reddit client for iOS

Overview

icon
Beam for Reddit

Contact License: GPL v2.0

An open source Reddit client for iOS.



Beam


Introduction

Hi, we're Awkward. In 2014, we started working on a Reddit client called Beam. In the years that followed, we created a client that lets its users enjoy all of Reddit's content in a unique and beautiful package. After four years of development, we've decided to open source Beam and truly hand it over to its users. We’ll still continue to work on Beam and release high-quality updates.

Features

Beam brings the best features of Reddit to your iPhone and iPad.

  • Multireddits
  • Content filters
  • In-app messaging
  • Message notifications
  • Post marking
  • Spoiler protection
  • 3D Touch

It also offered unlockable packs in the past, now available by default:

  • Mediaview
  • Night Mode
  • Auto Playing GIFs
  • Thumbnail Mode
  • Metadata Control
  • Multiple Accounts
  • Passcode Lock
  • Touch ID Unlock
  • Privacy Mode

Contributing

Bug Reports & Feature Requests

Please use GitHub issues to report any bugs or file feature requests. If you can fix it yourself, feel free to send in a pull request. For any bugs please include the following information:

  • The iOS version of the device
  • The model of the device (iPhone 5s, iPhone 6 etc)
  • If you are running the App Store version of the app or a version that you've compiled yourself
  • The fork or branch used if you've compiled the app yourself

Pull requests

Pull requests should include information about what has been changed. Also, try to include screenshots or links to issues in order to better review the pull request. All pull requests will be reviewed by someone of the Awkward team.

Requirements

In order to compile Beam you will need to meet the following requirements:

- A Mac with Xcode 8.1 or later
- Git command line tools or a git source control client like Tower. 

Getting started

Submodules

Beam uses submodules for dependencies, so when cloning Beam, make sure to include recursive submodules. If any problems occur trying to checkout these submodules, use the following terminal command to make sure are submodules are ready: git submodule update --init --recursive

Steps to compile

To compile Beam, please follow these steps:

  1. Clone the repository including submodules
  2. Edit SampleConfig.swift with the required values and rename it to Config.swift
  3. Open beam.xcodeproj in Xcode
  4. Run the app

General structure of the app

When opening the project in Xcode you will see several targets. The two most important targets are beam and Snoo.

  • beam This is the app that you see on your phone and in the App Store.
  • Snoo is the framework built by us that handles the core data objects and communication with the Reddit API. Beam calls snoo to get the data.

License

Beam is available under the GPL-2.0 license. See the LICENSE.md file for more info.

Links

Comments
  • Don't have rights to recursive submodules

    Don't have rights to recursive submodules

    User feedback

    The command to recursive submodules failed: git submodule update --init --recursive Am I missing something?

    Device information

    Device model: macOS 10.13

    Screenshot/video (optional)

    subclone

    opened by focusspan 3
  • "Unixporn" search keyword is blocked due to it containing "porn"

    Creating an issue is easy! Here are some steps to help you:

    User feedback

    Keyword "unixporn" should be whiteisted

    Device information

    Device model: iPhone 7 Plus iOS version: iOS 11.2.2 App version: v2.6 Compiled the app yourself: No

    Screenshot/video (optional)

    img_1593

    opened by an0sunshy 2
  • In-app purchases: should we keep them in?

    In-app purchases: should we keep them in?

    Beam has been open source for a few months now. The first question [1] we got was about the in-app purchases.

    Although it's unsure whether people want to help out continuing the development of Beam, there is something to say about the in-app purchases not making sense anymore... especially when there's a possibility that it's holding people back to help out.

    But if we remove in-app purchases, how does it work with the functionality provided within the packs? Do we remove packs and add everything on by default? Or how would that work.

    question 
    opened by davidvanleeuwen 2
  • Support for iOS 11 and iPhone X

    Support for iOS 11 and iPhone X

    If you currently compile Beam against the iOS 11 SDK you will see a lot of things break. This is mostly due to changes to contentInset in iOS 11 and a few workarounds no longer working. Here is a list of some of the stuff that is currently broken:

    • [x] Stars on the subscription lists are in the incorrect position
    • [x] The sort bar in subreddits, profiles and other places is in the wrong position
    • [x] The sort bar in subreddits is extremely high
    • [x] The sort bar in subreddits, profiles and other places appears empty
    • [x] The tabbars do not show correctly on the iPhone X
    • [x] Some posts have white stripes on the left and ride side
    • [x] Swiping back or down from a subreddit does not work correctly
    • [x] Search on a subreddit does not work

    There are probably more bugs in the app on iOS 11 and iPhone X, but feel free to discuss them in this issue.

    opened by renssies 2
  • TTTAttributedLabel crash when calculating size for some content

    TTTAttributedLabel crash when calculating size for some content

    Steps to reproduce:

    • Browse any reddit content on iOS 13.3
    • At some point, the app crashes with the following stacktrace:
    Thread 1 Queue : com.apple.main-thread (serial)
    #0	0x00000001b298dec4 in __pthread_kill ()
    #1	0x00000001b28ad724 in pthread_kill$VARIANT$armv81 ()
    #2	0x00000001b27fd844 in abort ()
    #3	0x00000001b29567d4 in abort_message ()
    #4	0x00000001b29569c4 in demangling_terminate_handler() ()
    #5	0x00000001b28be258 in _objc_terminate() ()
    #6	0x00000001b2963304 in std::__terminate(void (*)()) ()
    #7	0x00000001b2962c58 in __cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*) ()
    #8	0x00000001b2962c18 in __cxa_throw ()
    #9	0x00000001b28be0d0 in objc_exception_throw ()
    #10	0x00000001b2a9a5a8 in -[NSObject(NSObject) doesNotRecognizeSelector:] ()
    #11	0x00000001b2b9aaf4 in ___forwarding___ ()
    #12	0x00000001b2b9ca7c in _CF_forwarding_prep_0 ()
    #13	0x00000001b3895b60 in TAttributes::HandleUnderlineAttribute(void const*, TAttributes::AttributeHandlerContext*) ()
    #14	0x00000001b6135600 in -[NSAttributeDictionary __apply:context:] ()
    #15	0x00000001b38951b0 in TAttributes::ParseAttributes(__CFDictionary const*, __CTFont const*, void const*&, TInlineVector<std::__1::function<void (TAttributes&)>, 30ul>&, std::__1::pair<bool, LigatureSetting>*) ()
    #16	0x00000001b38949ec in TAttributes::ApplyFont(__CFDictionary const*, __CTFont const*, void const**) ()
    #17	0x00000001b389482c in TAttributes::TAttributes(__CFDictionary const*) ()
    #18	0x00000001b383e74c in TTypesetterAttrString::Initialize(__CFAttributedString const*) ()
    #19	0x00000001b383e5c8 in TTypesetterAttrString::TTypesetterAttrString(__CFAttributedString const*, __CFDictionary const*) ()
    #20	0x00000001b383a98c in TCFRef<CTFramesetterAttrString*> TCFBase_NEW<CTFramesetterAttrString, __CFAttributedString const*&>(__CFAttributedString const*&) ()
    #21	0x00000001b383a8c4 in CTFramesetterCreateWithAttributedString ()
    #22	0x00000001017af9c0 in -[TTTAttributedLabel framesetter] at /Users/robin/Development/Awkward/beam/TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.m:407
    #23	0x00000001017b7d30 in -[TTTAttributedLabel sizeThatFits:] at /Users/robin/Development/Awkward/beam/TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.m:1333
    #24	0x00000001017b7efc in -[TTTAttributedLabel intrinsicContentSize] at /Users/robin/Development/Awkward/beam/TTTAttributedLabel/TTTAttributedLabel/TTTAttributedLabel.m:1350
    #25	0x00000001b6fc80d4 in -[UIView(UIConstraintBasedLayout) _generateContentSizeConstraints] ()
    #26	0x00000001b6fc7dbc in -[UIView(UIConstraintBasedLayout) _updateContentSizeConstraints] ()
    #27	0x00000001b6fd19bc in -[UIView(AdditionalLayoutSupport) _updateSystemConstraints] ()
    #28	0x00000001b6fd0750 in -[UIView(AdditionalLayoutSupport) _sendUpdateConstraintsIfNecessaryForSecondPass:] ()
    #29	0x00000001b6fd0c1c in -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededCollectingViews:forSecondPass:] ()
    #30	0x00000001b6fd0b00 in -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededCollectingViews:forSecondPass:] ()
    #31	0x00000001b2e6e06c in -[NSISEngine withBehaviors:performModifications:] ()
    #32	0x00000001b6fd0e3c in -[UIView(AdditionalLayoutSupport) _recursiveUpdateConstraintsIfNeededCollectingViews:forSecondPass:] ()
    #33	0x00000001b6fd0b00 in -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededCollectingViews:forSecondPass:] ()
    #34	0x00000001b6fd12f8 in __100-[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededWithViewForVariableChangeNotifications:]_block_invoke ()
    #35	0x00000001b6fd0f30 in -[UIView(AdditionalLayoutSupport) _updateConstraintsIfNeededWithViewForVariableChangeNotifications:] ()
    #36	0x00000001b6fcb8bc in -[UIView(AdditionalLayoutSupport) _systemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority:hasIntentionallyCollapsedHeight:] ()
    #37	0x00000001b6d7f574 in -[UITableViewCell systemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority:] ()
    #38	0x00000001b6df60d4 in -[UITableView _heightForCell:atIndexPath:] ()
    #39	0x00000001b6dde428 in __53-[UITableView _configureCellForDisplay:forIndexPath:]_block_invoke ()
    #40	0x00000001b7091e68 in +[UIView(Animation) performWithoutAnimation:] ()
    #41	0x00000001b6ddd938 in -[UITableView _configureCellForDisplay:forIndexPath:] ()
    #42	0x00000001b6deeca0 in -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] ()
    #43	0x00000001b6dbc2c4 in -[UITableView _updateVisibleCellsNow:] ()
    #44	0x00000001b6dcf3dc in -[UITableView _visibleCellsUsingPresentationValues:] ()
    #45	0x00000001009c6e84 in StreamViewController.updateGifPlayingState() at /Users/robin/Development/Awkward/beam/Beam/UI/Subreddits/Posts Stream/StreamViewController.swift:890
    #46	0x00000001009df8d8 in StreamViewController.scrollViewDidScroll(_:) at /Users/robin/Development/Awkward/beam/Beam/UI/Subreddits/Posts Stream/StreamViewController.swift:913
    #47	0x00000001009dfda4 in @objc StreamViewController.scrollViewDidScroll(_:) ()
    #48	0x00000001b702fc60 in -[UIScrollView _notifyDidScroll] ()
    #49	0x00000001b6dbcff8 in -[UITableView _notifyDidScroll] ()
    #50	0x00000001b7019e70 in -[UIScrollView setContentOffset:] ()
    #51	0x00000001b6ddbafc in -[UITableView setContentOffset:] ()
    #52	0x00000001b70195a0 in _UIScrollViewAdjustForOverlayInsetsChangeIfNecessary ()
    #53	0x00000001b7034a3c in -[UIScrollView setSafeAreaInsets:] ()
    #54	0x00000001b65e4658 in -[UIViewController _updateViewSafeAreaInsetsAndEagerlyUpdateContentScrollView:] ()
    #55	0x00000001b65e4d9c in -[UIViewController _setContentOverlayInsets:andLeftMargin:rightMargin:] ()
    #56	0x00000001b65e674c in __121-[UIViewController __updateContentOverlayInsetsWithOurRect:inBoundsOfAncestorViewController:viaImmediateChildOfAncestor:]_block_invoke ()
    #57	0x00000001b65e6558 in -[UIViewController __updateContentOverlayInsetsWithOurRect:inBoundsOfAncestorViewController:viaImmediateChildOfAncestor:] ()
    #58	0x00000001b65e57b0 in -[UIViewController _updateContentOverlayInsetsFromParentIfNecessary] ()
    #59	0x00000001b65e5008 in -[UIViewController _updateContentOverlayInsetsForSelfAndChildren] ()
    #60	0x00000001b65f1944 in -[UIViewController _updateLayoutForStatusBarAndInterfaceOrientation] ()
    #61	0x00000001b65f64e4 in -[UIViewController viewDidMoveToWindow:shouldAppearOrDisappear:] ()
    #62	0x00000001b70961a8 in -[UIView(Internal) _didMoveFromWindow:toWindow:] ()
    #63	0x00000001b7095f88 in -[UIView(Internal) _didMoveFromWindow:toWindow:] ()
    #64	0x00000001b708a334 in __45-[UIView(Hierarchy) _postMovedFromSuperview:]_block_invoke ()
    #65	0x00000001b708a21c in -[UIView(Hierarchy) _postMovedFromSuperview:] ()
    #66	0x00000001b7098b24 in -[UIView(Internal) _addSubview:positioned:relativeTo:] ()
    #67	0x00000001b7058c88 in -[UINavigationTransitionView transition:fromView:toView:] ()
    #68	0x00000001b6562290 in -[UINavigationController _startTransition:fromViewController:toViewController:] ()
    #69	0x00000001b65626f4 in -[UINavigationController _startDeferredTransitionIfNeeded:] ()
    #70	0x00000001b6563a34 in -[UINavigationController __viewWillLayoutSubviews] ()
    #71	0x00000001b6546eb8 in -[UILayoutContainerView layoutSubviews] ()
    #72	0x00000001b709f3d0 in -[UIView(CALayerDelegate) layoutSublayersOfLayer:] ()
    #73	0x00000001b96027dc in -[CALayer layoutSublayers] ()
    #74	0x00000001b9608958 in CA::Layer::layout_if_needed(CA::Transaction*) ()
    #75	0x00000001b9613578 in CA::Layer::layout_and_display_if_needed(CA::Transaction*) ()
    #76	0x00000001b955bf1c in CA::Context::commit_transaction(CA::Transaction*, double) ()
    #77	0x00000001b9585c08 in CA::Transaction::commit() ()
    #78	0x00000001b6c32b08 in _afterCACommitHandler ()
    #79	0x00000001b2b13e68 in __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ ()
    #80	0x00000001b2b0ed54 in __CFRunLoopDoObservers ()
    #81	0x00000001b2b0f320 in __CFRunLoopRun ()
    #82	0x00000001b2b0eadc in CFRunLoopRunSpecific ()
    #83	0x00000001bca94328 in GSEventRunModal ()
    #84	0x00000001b6c09ae0 in UIApplicationMain ()
    #85	0x00000001008897d8 in main at /Users/robin/Development/Awkward/beam/Beam/AppDelegate.swift:37
    #86	0x00000001b2998360 in start ()
    
    bug 
    opened by robinspeijer 1
  • Support systemwide dark mode

    Support systemwide dark mode

    Beam currently has its custom dark mode implementation. I think it would be a good idea to use the system implementation instead, and use system dark mode colors.

    enhancement 
    opened by robinspeijer 1
  • #20 - Opt out of system dark mode to fix issues where using the defau…

    #20 - Opt out of system dark mode to fix issues where using the defau…

    …lt theme caused some screens to appear dark

    Some areas of the UI are no longer dark when the OS is in dark mode while beam is using the default theme.

    Since Beam implements its own dark mode system, we need to opt-out of the system-wide dark mode feature introduced in iOS 13.

    Settings

    opened by tommyle 1
  • Bug - Enabling system dark mode while using default theme causes some areas to appear dark

    Bug - Enabling system dark mode while using default theme causes some areas to appear dark

    User feedback

    If you enable dark mode on your phone but use light mode in Beam, some areas of the app will appear dark.

    Reproduction steps

    1. Enable dark mode in iOS
    2. Enable light mode in Beam
    3. Some areas of the Beam app appear in dark mode

    Device information

    Device model: iPhone X iOS version: 13.1.2 App version: 2.6.1 Compiled the app yourself: Yes

    Screenshot/video

    opened by tommyle 1
  • Development moved to PowerMobileTeam/beam?

    Development moved to PowerMobileTeam/beam?

    I love this app and am hoping to contribute to it when I get some free time. This morning when I checked the trending swift repos on GitHub I saw that there is now this repo, which is newer than this one.

    Should I submit my changes there? Has Awkward sold beam?

    Thanks

    opened by halleygen 1
  • Swift Compiler Error - Missing Classes

    Swift Compiler Error - Missing Classes

    User feedback

    On the latest master, the following classes are missing from the project causing a Swift compilation error:

    • ProfileViewController.swift
    • CurrentUserProfileViewController.swift
    • ProfileSwitchButton.swift

    Am I missing something in the setup process?

    Device information

    Xcode 9.4.1

    Screenshot/video (optional)

    Warning

    screen shot 2018-07-30 at 12 14 04 am

    Files greyed out

    screen shot 2018-07-30 at 12 14 35 am
    opened by ajfigueroa 1
  • Beam stops allowing touch feedback

    Beam stops allowing touch feedback

    Creating an issue is easy! Here are some steps to help you:

    User feedback

    Beam stops allowing touch feedback. Cannot click, go back, upvote, etc. until I close the app and reopen. Happens very often since new app update 2.6.1

    Device information

    Device model: iPhone X iOS version: 11.2.2 App version: 2.6.1 Compiled the app yourself: No

    opened by markseltenrijch 1
  • The state of Beam

    The state of Beam

    Some have noticed that the Beam app is no longer available in the app store. Here is why.

    Awkward the company behind Beam (and my previous employer) closed down in April 2020. You can read more about it here: https://medium.com/madeawkward/closing-down-awkward-a8b8f1ea722f.

    We decided during the closure that the app would stay in the App Store, however the person responsible for the developer account forgot to pay the yearly fee and the app was pulled from the store. Bringing it back would require an update, which requires work because it needs to be built with the latest iOS SDK.

    I personally wanted to keep Beam alive and vouched for it as well, however due to a number of unforeseen circumstances my free time to work on these kinds of projects is limited. At some point I would love to pick Beam back up, but Reddit is also changes at a rapid pace now, meaning that I might not be able to do so.

    For now I'm trying to focus on keeping Tatsi, Trekker and Ocarina up to date, they are dependencies of Beam(ish) and are used by other projects as well.

    If anyone wants to update the app for use with the iOS 14 SDK I would be happy to check and accept pull request and maybe get the app back in to the app store.

    opened by renssies 0
  • Add support for galleries

    Add support for galleries

    Creating an issue is easy! Here are some steps to help you:

    User feedback

    I’m not sure if that’s what it’s called, but when scrolling through /r/rateme for example I don’t see the galleries but links instead CFDC8B6F-89B7-4AA7-8F32-1822E936C991

    Device information

    Device model: iPhone 8 iOS version: 14.6 App version: 2.6.1 Compiled the app yourself: no

    Screenshot/video (optional)

    opened by Frivolous2 0
  • Downloading submodules failed

    Downloading submodules failed

    Hi

    When I try to download the git with submodules or submodules by themselves it says it failed. It also says make sure the repository exists or you have the correct rights.

    opened by alizahedi94 3
  • Text in cells is cut off

    Text in cells is cut off

    User feedback

    Text in cells is cut off.

    Device information

    Device model: 12.9" iPad Pro 3rd gen iOS version: iOS 13.3.1 App version: Simulator build

    Screenshot/video (optional)

    image bug 
    opened by Martijn-Vermeulen 0
  • Gifs won't play in the image detail view

    Gifs won't play in the image detail view

    User feedback

    Gifs won't play in the image detail view.

    Steps to reproduce:

    1. Open a subreddit
    2. Find a GIF
    3. Tap the GIF
    4. The image detail view will open but the view stays empty

    Device information

    Device model: iPhone X iOS version: iOS 13.3.1 App version: v2.7 (390)

    Screenshot/video

    IMG_5258

    bug 
    opened by Martijn-Vermeulen 0
Open-source jailbreaking tool for many iOS devices

Open-source jailbreaking tool for many iOS devices *Read disclaimer before using this software. checkm8 permanent unpatchable bootrom exploit for hund

null 0 Nov 6, 2021
A free and open source xkcd comic reader for iOS.

A free, ad-free, open-source, native, and universal xkcd.com reader for iOS. Download it from the app store now! Architecture AFNetworking for network

Mike 249 Dec 12, 2022
Collaborative List of Open-Source iOS Apps

Open-Source iOS Apps A collaborative list of open-source iOS, iPadOS, watchOS and tvOS apps, your contribution is welcome ?? Jump to Apple TV Apple Wa

null 33k Dec 30, 2022
Joplin - an open source note taking and to-do application with synchronization capabilities for Windows, macOS, Linux, Android and iOS. Forum: https://discourse.joplinapp.org/

Joplin® is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are sea

Laurent 33.7k Dec 30, 2022
Free and open source manga reader for iOS and iPadOS.

Aidoku A free and open source manga reading application for iOS and iPadOS. Features Ad free Robust WASM source system Online reading through external

null 421 Jan 2, 2023
Start your next Open-Source Swift Framework 📦

SwiftKit enables you to easily generate a cross platform Swift Framework from your command line. It is the best way to start your next Open-Source Swi

Sven Tiigi 821 Dec 28, 2022
Open-source implementation of Apple's Combine for processing values over time

CombineX 简体中文 Open-source implementation of Apple's Combine for processing values over time. Though CombineX have implemented all the Combine interfac

Luo Xiu 1 Dec 30, 2021
Open source Clips-inspired app.

AlohaGIF Website Funny moments? Want to share it as a GIF, but you are worried that you will lose speech from video? Aloha will scan sound and attach

Mike Pyrka 61 Sep 16, 2022
The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and ChromeOS

Outline Client The Outline Client is a cross-platform VPN or proxy client for Windows, macOS, iOS, Android, and ChromeOS. The Outline Client is design

Jigsaw 7.3k Dec 31, 2022
ESP source code for Free Fire (iOS jailbreak)

ESP FreeFire ESP source code for Free Fire (iOS jailbreak, Free Fire version: 1.93.1). This source is for learning purpose only, please do not use it

Huy Nguyen 11 Dec 25, 2022
Set `Open using Rosetta` option on Xcode easily

xcode-arch A utility to switch running architecture of Xcode on M1 mac. Motivation Currently, there is no way to toggle Open using Rosetta option othe

Takuhiro Muta 7 Aug 8, 2022
Capacitor File Opener. The plugin is able to open a file given the mimeType and the file uri

Capacitor File Opener. The plugin is able to open a file given the mimeType and the file uri. This plugin is similar to cordova-plugin-file-opener2 without installation support.

Capacitor Community 32 Dec 21, 2022
hackfoldr client for iOS

hackfoldr-iOS This is a simple iOS client for hackfoldr Why? Hackfoldr on mobile is simply not good enough on iOS. Use CocoaPods developer CocoaPods i

null 24 Feb 10, 2022
Keybase Go Library, Client, Service, OS X, iOS, Android, Electron

Keybase Hi, and welcome to the Keybase client repo. All our client apps (macOS, Windows, Linux, iOS, and Android) are being actively developed in this

Keybase 8.3k Dec 31, 2022
An IPFS client/api Swift Package, with the ability to add and pin any data on iOS/iPadOS/macOS

An IPFS client/api Swift Package, with the ability to add and pin any data on iOS/iPadOS/macOS. Originally bundled with GraniteUI, pulled out for independant use by any party.

Kala 4 Dec 8, 2022
Github iOS Client based on Github REST V3 API and GraphQL V4 API

ZLGithubClient Github iOS 客户端 by Existorlive Objective-c 2.0 Swift 5 Cocoapods 1.9.1 iOS >= 11.0 基于 Github REST V3 API 和 Github GraphQL V4 API 开发的iOS客

朱猛 55 Dec 29, 2022
Monkey is an unofficial GitHub client for iOS,to show the rank of coders and repositories.

Monkey for GitHub 中文README Monkey is an unofficial GitHub client. Monkey for GitHub is my first App,open source project.Welcome to download. GitHub op

coderyi 1.8k Jan 6, 2023
SwiftTypeReader - You can gather type definitions from Swift source code.

SwiftTypeReader - You can gather type definitions from Swift source code.

omochimetaru 23 Dec 12, 2022
A Simple way help you drop or drag your source (like UIImage) between different App.

A Simple way help you drop or drag your source (like UIImage) between different App.

逸风 13 Nov 24, 2022