Размер блока изображения при увеличении вида - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть вид и изображение, которое работает как кнопка.Хотелось бы узнать, есть ли способ заблокировать размер кнопки, чтобы при увеличении изображение оставалось небольшим и не увеличивалось при просмотре ..

one

two

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Потому что вы вызвали transform для superView.Это сделает все вложенные виды внутри преобразования вместе.

Вам необходимо переделать ваши представления:

SuperView:
- Content view (the image view)
- Border view
- Button close

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

Вы нашли мерзавца SPUserResizableView.

0 голосов
/ 21 ноября 2018

Поначалу я думал, что руководителю будет сложно.Но, наконец, если вы поместите imageView в UIScrollView, это не составит труда.

Идея состоит в том, чтобы переместить buttonView за пределы imageView во время масштабирования, а когда масштабирование закончится, верните его обратно в imageView, чтобы сделать вид, что ничего не произошло.,Я знаю, что это слишком многословно в программировании, но на самом деле оно отлично работает для вашего случая.

    var  originalCenter : CGPoint! // The center of ButtonView in imageView.


   //All functions are from the  UIScrollViewDelegate.

            func viewForZooming(in scrollView: UIScrollView) -> UIView?{
             originalCenter  =  buttonView.center // remember the original position.
            return imageView
        }

            func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?) {
                buttonView.frame =  imageView.convert(buttonView.frame, to: scrollView)
                scrollView.addSubview(buttonView)//add to superView of imageImage.
            }

            func scrollViewDidZoom(_ scrollView: UIScrollView){
                buttonView.center = imageView.convert(originalCenter, to: scrollView)  //During Zooming, update the buttonView in ScrollView.
            }

            func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat){
                buttonView.frame = imageView.convert(buttonView.frame, from: scrollView)
                imageView.addSubview(buttonView) //put it back.
            }

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

...