1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/iphone5solo-PYPhotosView

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

PYPhotoBrowser

Статус сборки Версия Pod Платформа Pod Лицензия Pod

  • Простой способ просмотра фотографий (изображений) в iOS.
  • Простое использование браузера изображений в iOS.## Содержание
  • Изображение опубликовано (просмотреть сетевые изображения, макет потока)

    изображение

  • Изображение не опубликовано (загрузка локальных изображений, публикация, просмотр)

    изображение

Какие приложения используют PYPhotoBrowser (обновление продолжается)

Сянмао Шаньюй мобильное офисное программное обеспечение Айньугу Хуайсиньминдао

Поддерживаемые состояния

  • Опубликовано (просмотр сетевых изображений)

    Изображение

  • Неопубликовано (загрузка локальных изображений / публикация / предварительный просмотр)

    Изображение

Поддерживаемые размещения

  • Поточное размещение, Линейное размещение

Поддерживаемые жесты

  • Клик, Двойной клик, Сжатие, Поворот, Перетаскивание, Сторона экрана## Где используется этот фреймворк

  • Основное применение — социальные приложения, для отображения группы изображений

  • Ниже приведены скриншоты некоторых популярных социальных приложений

Изображение1 Изображение2 Изображение3 Изображение4 Изображение5 Изображение6

Зависимости третьих фреймворков

  • Зависимости для просмотра изображений
    • MBProgressHUD
    • SDWebImage
    • DACircularProgress

Основные классы PYPhotoBrowser фреймворка

PYPhotosView (быстрое использование)


@interface PYPhotosView : UIScrollView

/** Делегат */
@property (nonatomic, weak) id<PYPhotosViewDelegate> delegate;
```/** Массив моделей сетевых изображений */
@property (nonatomic, copy) NSArray *photos;

/** Массив URL-адресов сетевых изображений (миниатюры) */
@property (nonatomic, copy) NSArray *thumbnailUrls;

/** Массив URL-адресов сетевых изображений (полностью размерные) */
@property (nonatomic, copy) NSArray *originalUrls;

/** Массив локальных изображений альбома (по умолчанию до девяти штук, если количество переданных изображений больше девяти, берутся первые девять) */
@property (nonatomic, strong) NSMutableArray *images;

```/**
Состояние всех изображений (по умолчанию — опубликовано)
*/
@property (nonatomic, assign) PYPhotosViewState photosState;
``````markdown
/**
Тип расположения изображений (по умолчанию — последовательное расположение)
*/
@property (nonatomic, assign) PYPhotosViewLayoutType layoutType;

/**
Тип индикации страниц изображений (по умолчанию — pageControl. При превышении количества изображений более чем девяти, используется label для отображения)
*/
@property (nonatomic, assign) PYPhotosViewPageType pageType;

/** Отступ между картинками (по умолчанию 5) */
@property (nonatomic, assign) CGFloat photoMargin;
/** Ширина картинки (по умолчанию 70) */
@property (nonatomic, assign) CGFloat photoWidth;
/** Высота картинки (по умолчанию 70) */
@property (nonatomic, assign) CGFloat photoHeight;

/** Максимальное количество картинок в ряду (по умолчанию 3), данная настройка неактивна при линейной компоновке */
@property (nonatomic, assign) NSInteger photosMaxCol;
/** Максимальное количество загружаемых изображений до отправки (по умолчанию 9) */
@property (nonatomic, assign) NSInteger imagesMaxCountWhenWillCompose;

/** Быстрое создание объекта photosView */
+ (instancetype)photosView;
/** photos : массив с URL-адресами миниатюр */
+ (instancetype)photosViewWithThumbnailUrls:(NSArray *)thumbnailUrls originalUrls:(NSArray *)originalUrls;
/** images : массив с локальными изображениями */
+ (instancetype)photosViewWithImages:(NSMutableArray *)images;

/**
 * thumbnailUrls : массив с URL-адресами миниатюр
 * originalUrls : массив с URL-адресами полноразмерных изображений
 * type : тип компоновки (по умолчанию потоковая компоновка)
 */
+ (instancetype)photosViewWithThumbnailUrls:(NSArray *)thumbnailUrls originalUrls:(NSArray *)originalUrls layoutType:(PYPhotosViewLayoutType)type;

/**

  • thumbnailUrls : массив с URL-адресами миниатюр
  • originalUrls : массив с URL-адресами полноразмерных изображений
  • maxCol : максимальное количество отображаемых изображений в ряду */
  • (instancetype)photosViewWithThumbnailUrls:(NSArray )thumbnailUrls originalUrls:(NSArray )originalUrls photosMaxCol:(NSInteger)maxCol;```objc / Вычисление размера PYPhontosView на основе количества изображений и состояния изображений */
  • (CGSize)sizeWithPhotoCount:(NSInteger)count photosState:(NSInteger)state;

/**

  • Обновление данных изображений (неопубликовано)
  • images : новый массив изображений */
  • (void)reloadDataWithImages:(NSMutableArray *)images;

@end

###PYPhotoBrowseView (пользовательский)


@protocol PYPhotoBrowseViewDelegate <NSObject>

@optional
/**
 * Вызывается перед отображением просмотра изображений
 */
- (void)photoBrowseView:(PYPhotoBrowseView *)photoBrowseView willShowWithImages:(NSArray *)images index:(NSInteger)index;

/**
 * Вызывается после отображения просмотра изображений
 */
- (void)photoBrowseView:(PYPhotoBrowseView *)photoBrowseView didShowWithImages:(NSArray *)images index:(NSInteger)index;

/**
 * Вызывается перед скрытием просмотра изображений
 */
- (void)photoBrowseView:(PYPhotoBrowseView *)photoBrowseView willHideWithImages:(NSArray *)images index:(NSInteger)index;

/**
 * Вызывается после скрытия просмотра изображений
 */
- (void)photoBrowseView:(PYPhotoBrowseView *)photoBrowseView didHideWithImages:(NSArray *)images index:(NSInteger)index;

/**
 * Вызывается при одиночном клике на изображение
 */
- (void)photoBrowseView:(PYPhotoBrowseView *)photoBrowseView didSingleClickImage:(UIImage *)image index:(NSInteger)index;

/**
 * Вызывается при долгом нажатии на изображение
 */
- (void)photoBrowseView:(PYPhotoBrowseView *)photoBrowseView didLongPressImage:(UIImage *)image index:(NSInteger)index;

@end

@protocol PYФотоПросмотрDataSource

@optional /** Возвращает массив изображений (UIImage), которые будут просматриваться */

  • (NSArray *)imagesForBrowse;

/** Возвращает массив URL изображений (NSString), если реализован метод - (NSArray *)imagesForBrowse; этот метод будет игнорирован */

  • (NSArray *)imagesURLForBrowse;
/** Возвращает индекс по умолчанию для отображаемого изображения (по умолчанию равно 0) */
- (NSInteger)currentIndex;

/** Определяет положение по умолчанию относительно главного окна */
- (CGRect)frameFormWindow;

/** Определяет положение при скрытии относительно главного окна */
- (CGRect)frameToWindow;

@end


@interface PYФотоПросмотр : UIWindow <PYФотоПросмотрДелегат>

/** Делегат */
@property (nonatomic, weak) id<PYФотоПросмотрДелегат> delegate;
/** Дата-сурс делегат */
@property (nonatomic, weak) id<PYФотоПросмотрDataSource> dataSource;

/** Массив изображений (UIImage), используемых для просмотра
 * Рекомендуется передавать UIImage, который уже был скачан. Для асинхронной загрузки используйте imagesURL
 * При установке этого свойства, imagesURL становится недействительным
 */
@property (nonatomic, copy) NSArray *images;

/** Массив URL изображений (NSString), используемых для просмотра */
@property (nonatomic, copy) NSArray *imagesURL;

/** Массив контроллеров изображений (UIImageView), используемых для просмотра */
@property (nonatomic, copy) NSArray *sourceImageViews;

/** Указывает текущий индекс */
@property (nonatomic, assign) NSInteger currentIndex;

/** Положение по умолчанию относительно главного окна (то есть с какой части окна начинать отображение),
 * Обратите внимание: при установке этого свойства, showFromView становится недействительным
 */
@property (nonatomic, assign) CGRect frameFormWindow;
/** Указывает, с какого UIImageView начинается постепенное увеличение изображения */
@property (nonatomic, strong) UIView *showFromView;
```
```markdown
## <a id="как-использовать-pyphotobrowser"></a>Как использовать PYPhotoBrowser
* Использование Cocoapods:
  - `pod "PYPhotoBrowser"`
  - Импортировать основной заголовочный файл `#import <PYPhotoBrowser/PYPhotoBrowser.h>`
* Ручное импортирование:
  - Перетянуть все файлы из папки `PYPhotoBrowser` в проект
  - Импортировать основной заголовочный файл `#import "PYPhotoBrowser/PYPhotoBrowser.h"`
  - **Внимание:** если проект уже использует сторонние библиотеки: `MBProgressHUD`, `SDWebImage`, `DACircularProgress`, то повторное импортирование не требуется. В противном случае выберите необходимые библиотеки из папки `Dependency` и перетяните их в проект.


### <a id="конкретное-использование-детали-см-пример-программы-pyphotobrowserexample"></a>Конкретное использование (детали см. пример программы PYPhotoBrowserExample)

    Пример кода:
```

```objc
/** Положение при скрытии относительно главного окна (то есть в какую часть окна скрывается),
 * Обратите внимание: при установке этого свойства, hiddenToView становится недействительным
 */
@property (nonatomic, assign) CGRect frameToWindow;
/** Указывает, до какого UIView постепенно уменьшается изображение перед тем, как исчезнуть */
@property (nonatomic, strong) UIView *hiddenToView;

/** При повороте экрана, автоматически поворачивает изображение? По умолчанию YES */
@property (nonatomic, assign) BOOL autoRotateImage;

/**
 * Отображает изображения
 */
- (void)show;

/**
 * Скрывает изображения
 */
- (void)hide;

@end
``````objc```markdown
     // 1. Создание массива ссылок на миниатюры изображений
     NSMutableArray *thumbnailImageUrls = [NSMutableArray array];
     // Добавление ссылок на миниатюры изображений
     [thumbnailImageUrls addObject:@"http://ww3.sinaimg.cn/thumbnail/006ka0Iygw1f6bqm7zukpj30g60kzdi2.jpg"];
     [thumbnailImageUrls addObject:@"http://ww1.sinaimg.cn/thumbnail/61b69811gw1f6bqb1bfd2j20b4095dfy.jpg"];
     [thumbnailImageUrls addObject:@"http://ww1.sinaimg.cn/thumbnail/54477ddfgw1f6bqkbanqoj20ku0rsn4d.jpg"];
     [thumbnailImageUrls addObject:@"http://ww4.sinaimg.cn/thumbnail/006ka0Iygw1f6b8gpwr2tj30bc0bqmyz.jpg"];
     [thumbnailImageUrls addObject:@"http://ww2.sinaimg.cn/thumbnail/9c2b5f31jw1f6bqtinmpyj20dw0ae76e.jpg"];
     [thumbnailImageUrls addObject:@"http://ww1.sinaimg.cn/thumbnail/536e7093jw1f6bqdj3lpjj20va134ana.jpg"];
     [thumbnailImageUrls addObject:@"http://ww1.sinaimg.cn/thumbnail/75b1a75fjw1f6bqn35ij6j20ck0g8jtf.jpg"];
     [thumbnailImageUrls addObject:@"http://ww2.sinaimg.cn/thumbnail/005NFHyQgw1f6bn8bha0eg308w0gib2d.gif"];
     [thumbnailImageUrls addObject:@"http://ww1.sinaimg.cn/thumbnail/86afb21egw1f6bq3lq0itj20gg0c2myt.jpg"];
     
     // 1.2 Создание массива ссылок на полноразмерные изображения
     NSMutableArray *originalImageUrls = [NSMutableArray array];
     // Добавление ссылок на полноразмерные изображения
     [originalImageUrls addObject:@"http://ww3.sinaimg.cn/large/006ka0Iygw1f6bqm7zukpj30g60kzdi2.jpg"];
     [originalImageUrls addObject:@"http://ww1.sinaimg.cn/large/61b69811gw1f6bqb1bfd2j20b4095dfy.jpg"];
     [originalImageUrls addObject:@"http://ww1.sinaimg.cn/large/54477ddfgw1f6bqkbanqoj20ku0rsn4d.jpg"];
     [originalImageUrls addObject:@"http://ww4.sinaimg.cn/large/006ka0Iygw1f6b8gpwr2tj30bc0bqmyz.jpg"];
     [originalImageUrls addObject:@"http://ww2.sinaimg.cn/large/9c2b5f31jw1f6bqtinmpyj20dw0ae76e.jpg"];
     [originalImageUrls addObject:@"http://ww1.sinaimg.cn/large/536e7093jw1f6bqdj3lpjj20va134ana.jpg"];
     [originalImageUrls addObject:@"http://ww1.sinaimg.cn/large/75b1a75fjw1f6bqn35ij6j20ck0g8jtf.jpg"];
     [originalImageUrls addObject:@"http://ww2.sinaimg.cn/large/005NFHyQgw1f6bn8bha0eg308w0gib2d.gif"];
     [originalImageUrls addObject:@"http://ww1.sinaimg.cn/large/86afb21egw1f6bq3lq0itj20gg0c2myt.jpg"];```markdown
["有点C""6.4"]"];
// 2. Создание объекта PYPhotosView
PYPhotosView *photosView = [PYPhotosView photosViewWithThumbnailUrls:thumbnailImageUrls originalUrls:originalImageUrls];
// 3. Добавление объекта PYPhotosView в представление
[self.view addSubview:photosView];
```

Также следует перевести:

- `"有点C"是"6.4"` -> `"Немного C" это "6.4"`

Полный текст с исправлениями:

```markdown
[["Немного C" это "6.4"]];
// 2. Создание объекта PYPhotosView
PYPhotosView *photosView = [PYPhotosView photosViewWithThumbnailUrls:thumbnailImageUrls originalUrls:originalImageUrls];
// 3. Добавление объекта PYPhotosView в представление
[self.view addSubview:photosView];
```
- **Не опубликовано (локальная загрузка изображений)**

Пример кода:

```objc
    
    // 1. Создание массива локальных изображений
    NSMutableArray *imagesM = [NSMutableArray array];
    for (int i = 0; i < arc4random_uniform(4) + 1; i++) {
        [imagesM addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%02d", i + 1]]];
    }
    
    // 2.1 Установка локальных изображений
    PYPhotosView *photosView = [PYPhotosView photosViewWithImages:imagesM];
    
    // 3. Установка делегата
    photosView.delegate = self;
    
    // 4. Добавление photosView
    [self.view addSubview:photosView];

```

- **Использование только функции просмотра изображений (с использованием класса PYPhotoBrowseView)**

Пример кода:

```objc

    // 1. Создание объекта photoBroseView
    PYPhotoBrowseView *photoBroseView = [[PYPhotoBrowseView alloc] init];
    
    // 2.1 Установка массива источников изображений (UIImageView)
    photoBroseView.sourceImageViews = imageViews;
    // 2.2 Установка текущего индекса изображения (то есть номер нажатого изображения)
    photoBroseView.currentIndex = 2;
    
    // 3. Отображение (просмотр)
    [photoBroseView show];

```

## <a id="настройка_photosView"></a>Настройка `photosView`

### Изменение свойств объекта `photosView` позволяет настроить его

* Настройка типа макета (по умолчанию используется поточный макет)

```objc
// Установка типа макета как линейный
photosView.layoutType = PYPhotosViewLayoutTypeLine;
```

* Настройка типа страницы (по умолчанию используется `pageControl`)

```objc
// Установка типа страницы как текстовый
photosView.pageType = PYPhotosViewPageTypeLabel;
```

* Настройка расстояния между изображениями (по умолчанию 5)```objc
// Установка расстояния между изображениями в 10 пикселей
photosView.photoMargin = 10;
```

* Настройка размера изображений (по умолчанию 70x70 пикселей)

```objc
// Установка ширины изображения (ширина) в 100 пикселей
photosView.photoWidth = 100;
// Установка высоты изображения (высота) в 60 пикселей
photosView.photoHeight = 60;
```

* Настройка максимального количества изображений в одной строке (по умолчанию 3)

```objc
// Установка максимального количества столбцов изображений в 6
photosView.photosMaxCol = 6;
```

* Настройка максимального количества изображений перед отправкой (по умолчанию 9)

```objc
// Установка максимального количества изображений перед отправкой в 15
photosView.imagesMaxCountWhenWillCompose = 15;
```

* Настройка автоматического изменения размера изображений при повороте экрана (по умолчанию YES)

```objc
// Выключение автоматического изменения размера изображений при повороте экрана
photosView.autoRotateImage = NO;
```## <a id="ожидаем_что"></a>Ожидаемое

Если у вас возникнут вопросы во время использования, пожалуйста, откройте issue! Я с удовольствием помогу вам ответить на любые связанные вопросы!

Вместо того чтобы ставить мне звезды, бросьте мне как можно больше баг-репортов!

Если вы хотите принять участие в поддержке этого проекта, вы можете отправить pull request!

Если вам нужны дополнительные API для кастомизации или вы хотите дать совет/предложение, пожалуйста, откройте issue! Я предоставлю дополнительные API в соответствии с вашими требованиями!

Если вы используете эту стороннюю библиотеку в запущенном приложении, пожалуйста, откройте issue! Это поможет мне своевременно собирать данные и обновлять информацию!```markdown
- Если у вас возникнут вопросы во время использования, пожалуйста, создайте issue! Я с удовольствием помогу вам ответить на любые связанные вопросы!
- Вместо того чтобы ставить мне звезды, отправьте мне как можно больше bug-reports!
- Если вы хотите принять участие в поддержке этого проекта, вы можете отправить pull request!
- Если вам нужны дополнительные API для кастомизации или вы хотите дать совет/предложение, пожалуйста, создайте issue! Я предоставлю дополнительные API в соответствии с вашими требованиями!
- Если вы используете эту стороннюю библиотеку в запущенном приложении, пожалуйста, создайте issue! Это поможет мне своевременно собирать данные и обновлять информацию!
```

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Простой способ просмотра фотографий и воспроизведения видео. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/iphone5solo-PYPhotosView.git
git@gitlife.ru:oschina-mirror/iphone5solo-PYPhotosView.git
oschina-mirror
iphone5solo-PYPhotosView
iphone5solo-PYPhotosView
master