适用于摄影画廊或作品集的 Swift/iOS 查看器

贡献 叉 天文学家 问题 麻省理工学院执照

产品名称屏幕截图

目录
  1. About The Project

  2. 开始

  3. 用法和特点
  4. Roadmap
  5. Contributing

  6. About the model
  7. License
  8. Contact
  9. Acknowledgments

关于项目

名称

摄影俱乐部瓦尔雷是一个以荷兰南部小镇瓦尔命名的摄影俱乐部。自1988年以来,其俱乐部成员开会互相评论彼此的照片,组织短途旅行,并举办年度照片博览会。

投资 组合

这个应用程序的目标是展示照片俱乐部成员的策划作品

工作被组织成 .每个作品集都涵盖了摄影师在摄影俱乐部内共享的作品部分。如果摄影师是(或曾经是)多个受支持的摄影俱乐部的成员,则该应用程序将包含该摄影师的多个作品集。portfolios

Each portfolio is shown in chronological order, with the latest work shown first, and typically spans multiple years.

Built With

Getting Started

To get a local copy up and running, use GitHub’s feature, compile and run on a simulator or physical device. Those who prefer running git from the command line should be able to manage on their own.Open with Xcode

Installation

Usage and features

Opening animation

When the app opens, it shows a large image corresponding to the app’s icon. If you tap somewhere inside the image, it zooms out to show the full image representing how digital cameras see color.

This involves a Bayer color filter array that filters the light per pixel. The filter array is shown here superimposed on a colorful photo.

Tapping inside the image allows you to zoom in or out to your heart’s content. Tapping outside the image area ends the animation. You can trigger the animation again by restarting the app. A single tap outside the image allows you to skip the animation entirely.

The screens

  • Portfolios shows the available portfolios (gallery of images of a photographer in the context of one club). Clicking on one item shows a screen with the contents of the selected portfolio. Swiping left can, in exceptional cases, be used to delete an entry. The bar filters the list of portfolios.detailSearch
  • Settings allows you to configure what types of members you want to see in the list of Portfolios.
  • Readme contains a scrollable explanation, similar to what you are reading.
  • Photo clubs lists the photo clubs that are currently loaded. A purple pin on the map show the location of the club’s club house (where they meet). A blue pin shows the location of other loaded photo clubs. A lock icon selects whether a map can be zoomed and panned, or is pinned in place.
  • Photographers lists the photographers currently loaded into the app. It gives information which is club-independent. The entries may store birthdays, and clickable links to personal (club-independent) photography sites. The bar filters the list of portfolios.Search

Multi-club support

Version one the app only supported Photo Club Waalre (aka Fotogroep Waalre), but Version 2 supports multiple photo clubs. For a preview, drag down (“pull to refresh”) the Photo Club page. This loads just enough test data to show what multi-club support looks like.

Roadmap

  • Distribute the source code on GitHub
    • Publish article to get attention in Dutch photo club organization
  • MemberListView: show thumbnails of most recent photos
  • MemberListView: remove members who are removed on server
  • MemberGaleryView: use of WebKit by SwiftUI equivalent
  • Support onboarding of clubs without code changes
  • Notifications of portfolio changes (?)

See the open issues for a full list of proposed features (and known issues).

Contributing

All contributions are greatly appreciated.

Areas for contribution

Welcome contributions include adding features, code improvements, ideas on architecture and interface definition, and possibly even a backend.

Contributions that don’t require coding are also welcome: beta testing via TestFlight, feature requests, translations, SVG icon design, and maybe UI/UX design.

One likely big change

A central design challenge for a next stage will be to provide a clean, standardized interface to retrieve data per photo club. The interface is needed to load the data, but also keeps the data within the app up to date. After all, membership data and portfolios change regularly. The current interface is essentially a plug-in design with an adaptor per photo club. This needs to be replaced by a standard data interface to avoid having to extend the source code whenever a new club comes aboard.

The app currently uses a software module per club. That module loads membership and portfolio data from the club’s server and merges it into the in-app database. For Photo Club Waalre, the membership data is read from a HTML table on a password protected part of the club’s website. The portfolios use a somewhat more robust solution: they are read from XML files generated by a Lightroom Web plug-in called JuiceBox-Pro Thus portfolios are created and managed as Lightroom collections. These collections are then uploaded to the webserver with a single Upload click (thus triggering JuiceBox-Pro) where they can be downloaded by the app.

How to contribute

If you have a suggestion that would make this better, you can fork the repo and create a pull request. The command line commands to do this (but the Xcode IDE has equivalent commands under ):gitSource Control

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

You can alternatively submit an with a tag like ”enhancement” or “bug” without having to do the code changes yourself.issue

About the model

The app uses a Swift-style MVVM design, meaning the model data is stored in structs (and in database tables) rather than in classes. As an intro for developers, here is a quick tour of the model.

Product schema

Every has zero or more of various types (current, former, etc.). Some of these have a formal role like chairman within the . We will come back to why is not visible in the model in a moment.PhotoClubMembersMembersPhotoClubMember

Some of information about a (like name, birthday, a personal website) is unrelated to the ship of a .PhotographerPhotographer'sMemberPhotoClub

Portfolios represent the body of work of a in the context of a single . A contains , but an could be in multiple – depending on where the was shared.PhotographerPhotoClubPortfolioImagesImagePortfoliosImage

Member and can be considered synonyms from a modeling perspective: we create exactly one for each that a joined. And every of a has exactly one in the app. Therefore and are from a formal perspective synonyms, and thus modelled as a single concept or table.PortfolioPortfolioPhotoClubPhotographerMemberPhotoClubPortfolioMemberPortfolio

License

Distributed under the MIT License. See for more information.LICENSE.txt

Contact

Peter van den Hamer – github@vdhamer.com

Project Link: https://github.com/vdhamer/PhotoClubWaalre

Acknowledgments

  • The opening image animation uses an image by Greetje van Son.

GitHub

点击跳转