iOS Есть ли простой параметр, при котором углы клипа вида закругляются до конца стека видов? - PullRequest
1 голос
/ 04 августа 2020

У меня есть представление, которое применяет радиус угла

poster.imageView.layer.cornerRadius = theme.cornerRadius
poster.imageView.clipsToBounds = true

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

Есть варианты лучше?

1 Ответ

0 голосов
/ 04 августа 2020

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

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

        imageView.layer.cornerRadius = 50
    
        imageView.addSubview(exampleView1)
        imageView.addSubview(exampleView2)

        //Setting constraints for top, bottom, leading and half the width of image
        exampleView1.translatesAutoresizingMaskIntoConstraints = false
        exampleView1.topAnchor.constraint(equalTo: imageView.topAnchor).isActive = true
        exampleView1.bottomAnchor.constraint(equalTo: imageView.bottomAnchor).isActive = true
        exampleView1.widthAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 0.5).isActive = true
        exampleView1.leadingAnchor.constraint(equalTo: imageView.leadingAnchor).isActive = true
        
        //Setting constraints for top and trailing then giving small width and height
        exampleView2.translatesAutoresizingMaskIntoConstraints = false
        exampleView2.topAnchor.constraint(equalTo: imageView.topAnchor).isActive = true
        exampleView2.widthAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 0.2).isActive = true
        exampleView2.heightAnchor.constraint(equalToConstant: 100).isActive = true
        exampleView2.trailingAnchor.constraint(equalTo: imageView.trailingAnchor).isActive = true

Вот как это выглядит:

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

Если вы по-прежнему видите другие результаты, это может означать, что:

  1. Вид вашего «плаката» (родительский элемент imageView) каким-то образом изменяется и сбрасывает значение cornerRadius.
  2. Вы добавляете подпредставления в представление «постера» вместо самого imageView, и из-за этого cornerRadius будет обрезать только подпредставления imageView, а не общий родительский элемент. Чтобы исправить это, просто убедитесь, что все подпредставления имеют одного и того же родителя, а затем добавьте CornerRadius к родительскому.
  3. ContentMode вашего imageView установлен на aspectFit, и вы ошибочно принимаете края визуализированного изображения с краями самого imageView и создается впечатление, что угол радиуса не применяется.

Пожалуйста, укажите дополнительную информацию, если ничего из этого не работает.

...