Как я редактирую шаблоны Visual Studio для нового класса/интерфейса C#?

Я снова проверил ваши скриншоты. Все выглядит хорошо для меня. Теперь я все еще догадываюсь здесь. Обычно, когда возникает предупреждение о таких ограничениях, даже если это занимает мое время, я решаю это. Хорошо, что у вас уже есть размер изображения данных.

Из этого блока кода:

self.userContentImageView.kf.setImage(with: URL(string: image.url), completionHandler: { (_, _, _, _) in
     self.setNeedsLayout()
     self.layoutIfNeeded()
     })

Это некрасиво и определенно приведет к появлению мерцающей или нежелательной ошибки анимации / движения, как в вашем видео-демонстрации.

Как правило, для меня достаточно self.layoutIfNeeded(), чтобы настроить макет ПОСЛЕ настройки ограничения любого вида.

Таким образом, ваш блок кода может быть преобразован в следующее:

let ratio = CGFloat(image.width) / CGFloat(image.height)
userContentImageViewHeightConstraint.constant = CGFloat((UIScreen.main.bounds.width) / ratio)
self.layoutIfNeeded()
self.userContentImageView.kf.indicatorType = .activity
self.userContentImageView.kf.setImage(with: URL(string: image.url), completionHandler: { (_, _, _, _) in })

ИЛИ ЛУЧШЕ, (я понял, что это внутри вашей клетки):

Прежде чем вы вернете свою ячейку в [ 115] вы делаете корректировку ограничений! Раньше у меня был личный проект с тем же потоком / логикой, что и у вас - случайные размеры изображений с сетевыми вызовами.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        self.feedCell = tableView.dequeueReusableCell(withIdentifier: self.feedCell.identifier)
            as! FeedTableViewCell
        self.feedCell.indexPath = indexPath
        self.feedCell.delegate = self

        let post = self.catPosts[indexPath.row]
        self.feedCell.post = post

        let aspectRatio = self.feedCell.getAspectRatioAccordingToiPhones(cellImageFrame: self.feedCell.frame.size, media: post.media!.first!)
        self.feedCell.constraint_PostHeight?.update(offset: aspectRatio)

        return self.feedCell
    }

и внутри моей камеры у меня есть метод getAspectRadio....:

func getAspectRatioAccordingToiPhones(cellImageFrame: CGSize, media: Media) -> CGFloat {

        guard let widthNumber = NumberFormatter().number(from: catMedia.width!),
            let heightNumber = NumberFormatter().number(from: catMedia.height!) else {
            return UIScreen.main.bounds.width
        }

        let imageWidth = CGFloat(truncating: widthNumber)
        let imageHeight = CGFloat(truncating: heightNumber)

        let widthOffset = imageWidth - cellImageFrame.width
        let widthOffsetPercentage = (widthOffset * 100) / imageWidth
        let heightOffset = (widthOffsetPercentage * imageHeight) / 100
        let effectiveHeight = imageHeight - heightOffset
        return effectiveHeight
    }

Надеюсь, это поможет вам сейчас :) Удачи!

198
задан Shamim Hafiz 9 June 2017 в 12:19
поделиться

3 ответа

Экстракт, редактирование и пересматривайте. Пути предназначены для шаблона класса, но шаблоны интерфейса находятся в той же папке.

Вы можете захотеть редактировать файл шаблона VS в каждом, чтобы удалить тот факт, что они не автоматически добавляют ссылки на систему сборки, System.data и / или System.xml.

2005:

C: \ Program Files (x86) \ Microsoft Visual Studio 8 \ Common7 \ IDE \ ItemTemplates \ CSHARP \ 1033 \ Class.zip

2008:

C: \ Program Files (x86 ) \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplates \ CSHARP \ Code \ 1033 \ Chars.zip

2010:

C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ ItemTemplates \ CSHARP \ Code \ 1033 \ class.zip

Начиная с Visual Studio 2012, шаблоны не зависны, поэтому вы можете редактировать каждый шаблон .cs в каждой применимой папке напрямую.

2012:

C: \ Файлы программы (X86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ ItemTemplates \ CSHARP \ Code \ 1033 \ Class \ Class.cs

2013:

C: \ Файлы программы (X86) \ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ ItemTemplates \ CSHARP \ Code \ 1033 \ Class \ Class.cs

2015:

C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDe \ ItemTemplates \ CSHARP \ Code \ 1033 \ CSHARP \ CDED.CS

2017

VS 2017 изменяет местоположение каталога и теперь зависит от вашего издательства (Professional / Enterprise / Etc). Так что для Enterprise Edition:

C: \ Program Files (X86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ Common7 \ IDE \ ItemTemplates \ CSHARP \ Code \ 1033 \ Class \ Class.cs

2019

Местоположение VS 2019 похоже на 2017 год. Так что для Enterprise Edition:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ Common7 \ IDE \ ItemTemplates \ CSHARP \ Code \ 1033 \ Class \ Class .cs

Примечания

Express Editions

В Express Editions вам придется поиск в подкаталоге WDExpress внутри папки IDE , так, например, Для VS 2015 Express:

C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ WDExpress \ ItemTemplates \ CSHARP \ Code \ 1033 \ Class \ Class.cs

Другие языки

Вы не используете английскую версию Visual Studio, папку 1033 могут не существовать, а другое число, представляющее ваш язык. Например, это 1031 в немецкой установке.

344
ответ дан 23 November 2019 в 05:12
поделиться

Просто хочу добавить к отличному ответу Сэма Харвелла. Может быть несколько шаблонов классов, например, AspNetCore имеет собственный шаблон по адресу:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Enterprise \ Common7 \ IDE \ ItemTemplates \ AspNetCore \ Code \ 1033 \ Class \ Class.cs

0
ответ дан 23 November 2019 в 05:12
поделиться

Вы ищете следующий каталог:

C: \ Program Files ( x86) \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ItemTemplates \ csharp

Каждый шаблон представляет собой ZIP-файл внутри 1033 (английской) подпапки одной из категорий в этой папке. Вы можете редактировать файл .cs внутри файла zip.

Если вы находитесь на 32-битной системе, удалите (x86) . VS2005 - Microsoft Visual Studio 8 , а VS2010 - Microsoft Visual Studio 10.0 .


Обратите внимание, что эти шаблоны не являются для пользователя. Вы можете сделать шаблоны для каждого пользователя, скопировав эти ZIP-файлы на мои документы \ Visual Studio 2008 \ Templates \ ItemTemplates \ Visual C # .

9
ответ дан 23 November 2019 в 05:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: