Compañeros desarrolladores,
Estoy teniendo problemas con el diseño Automático en el Interface Builder (Xcode 5 /iOS 7).
Es muy básico e importante así que creo que todo el mundo debe saber cómo esta funciona correctamente. Si este es un error en Xcode, es un crítico!

Así, cada vez que tengo una vista de jerarquía como este puedo ejecutar en problemas:

>UIViewController
>> UIView
>>>UIScrollView
>>>>UILabel (or any other comparable UIKit Element)

La UIScrollView ha sólidos restricciones, por ejemplo, 50 px de cada lado (no hay problema).
A continuación, añado un Espacio de restricción a la UILabel (no hay problema) (y puedo incluso pin de la altura /anchura de la etiqueta, no cambia nada, pero debe ser innecesarios debido a la Etiqueta del tamaño real)

El problema empieza cuando puedo agregar un punto de restricción a la UILabel:

E. g., Espacio al final: Superview es Igual a: 25

Ahora dos advertencias puede ocurrir – y no entiendo por qué:

A) Contenido Desplazable Tamaño de la Ambigüedad (Desplazamiento de la Vista ha ambiguo contenido desplazable en altura/anchura)

B) fuera de lugar Vistas (Etiqueta de Espera: x= -67 Real: x= 207

Hice este ejemplo mínimo en un recién nuevo proyecto en el que usted puede descargar y os adjunto una captura de pantalla. Como se puede ver, la Interfaz del Generador de espera de la Etiqueta para sentarse fuera de la UIScrollView del límite (el naranja rectángulo discontinuo). La actualización de la Etiqueta de la estructura con la de Resolver los Problemas de la Herramienta se mueve a la derecha allí.

Por favor nota: Si va a reemplazar el UIScrollView con una UIView, el comportamiento es el esperado (la Etiqueta de la trama es correcta y de acuerdo a la restricción). Por lo que parece ser un problema con UIScrollView o me estoy perdiendo algo importante.

Cuando ejecuto la App sin necesidad de actualizar la Etiqueta de fotograma como se sugiere por el IB se coloca bien, exactamente donde se supone que debe de ser y el UIScrollView es desplazable.
Si HAGO la actualización de la estructura de la Etiqueta es fuera de la vista y el UIScrollView no se desplaza.

Ayúdame Obi-Wan Kenobi! ¿Por qué la ambigüedad de la disposición? ¿Por qué el fuera de lugar vista?

Puede descargar el proyecto de ejemplo aquí y probar si se puede averiguar lo que está pasando:
https://github.com/Wirsing84/AutoLayoutProblem

UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

  • Trate de colocar el UILabel en una vista de contenido, a continuación, ajuste el borde posterior de la etiqueta a la vista del contenido (regular UIView). Este video puede ayudar mucho: youtube.com/watch?v=PgeNPRBrB18&feature=norton ghost.ser
  • Gran video, pero no arreglar las advertencias para mí. 🙁
  • Muchas gracias por el video no fue (sorprendentemente) mucho que he aprendido de ti! Sin embargo, cuando puedo combinar el conocimiento de la de vídeo con stackoverflow.com/questions/18953617/… puedo arreglar las advertencias. La pregunta que queda es: ¿Cómo hacer el scrollView del contentView tamaño sólo tan grande como sea necesario?
  • Echa un vistazo a este video. Se muestra cómo utilizar UIScrollLayout y autodiseño con XCode 5 / iOS 7 .
  • Mi sugerencia es que no uso UIScrollView directamente. En lugar de utilizar UICollectionView o UITableView tanto como sea posible, la mayoría de cada cosa es posible con estos elementos y también dar la sencillez, legibilidad y la reutilización!!!
  • Además de la parte superior del espacio y el espacio final, añadir que conduce el espacio y el espacio inferior así.
  • Acabo de crear Ambigüedad->Nunca Verificar en el Tamaño de Inspector y funciona sin la adición de UIView como una subvista (que rompió algunas cosas para mí, en realidad). Yo suelo hacer el resto en el código. No encontró problemas con los que hasta ahora.
  • Odio a este estúpido error :\ Android es mucho más fácil

InformationsquelleAutor Wirsing | 2013-09-26

27 Comentarios

  1. 980

    NOTA: En iOS > 10.0, esto no ha sido probado; por lo tanto, la solución podría ser incompleta en ciertas situaciones.

    Así que sólo he solucionado de esta manera:

    1. Dentro de la UIScrollView agregar un UIView (podemos llamar a que contentView);

    2. En este contentView, conjunto superior, inferior, izquierdo y derecho de los márgenes a 0 (por supuesto, de la scrollView que es el superView); también centrar horizontal y verticalmente;

    Terminado.

    Ahora usted puede agregar todos sus puntos de vista en que contentView, y el contentSize de la scrollView será redimensionada automáticamente de acuerdo con el contentView.

    Actualización:

    Algún caso especial que está cubierto por esta video publicado por @Sergio en los comentarios de abajo.

    • Esto es genial! Centro X y y fue la pieza clave!
    • Casi perfecto, excepto que el scrollview no puede adivinar la longitud de su contenido y cambiar el tamaño en consecuencia es contentSize para encajar los objetos en el interior. Tengo un formato tableview dentro de la contentView cuyos cambios de altura (a través de la restricción) y el scrollview no me permiten desplazarse.
    • He quitado el Centro X y y, lo que resultó en mí la ambigüedad de advertencia para UIScrollView. Me aseguré de que mi objeto (UITableView) en el interior tiene restricción de clavos a los 4 lados. Mi UITableView‘s altura se establece de forma dinámica. Ahora, acabo de pin contentView a UIScrollView y la advertencia se ha ido.
    • ¿Tiene un formato tableview en un scrollview? Tal vez podría ser este el problema, la causa de este enfoque realmente funciona. También: ¿por qué necesita la vista de la tabla en un desplazamiento de la vista?
    • Thx! Puede alguien explica cómo funciona esto?
    • Una nota más,no establece alwaysBounceVertical o alwaysBounceHorizontal true si el contenido es menor que los límites si desea desplazarse, no importa qué el tamaño del contenido que actualmente es.
    • todavía no se puede llegar a desplazarse, incluso cuando se establece onLoad, como yo lo hice aquí: stackoverflow.com/questions/10518790/… Hizo exactamente como usted la describe 🙁
    • amigo, en ur de código solo puedo ver u utiliza marcos..no hay restricciones.
    • Tal vez esto video puede ayudar a superar todos los problemas restantes.
    • esto no lo hacen de desplazamiento tho.
    • Gobbi: ¿Qué significa para ti «(por supuesto, desde el scrollView que es el superView)» ? ¿Tengo que configurar la parte superior, inferior, izquierdo y derecho de los márgenes a 0″ para el contentView o el scrollView ?
    • un autodiseño restricción requiere 2 puntos de vista entre los que se establece las restricciones. El contentView, tiene que ser 0pt desde la parte superior, 0 de la parte inferior, y así sucesivamente. Que la parte «superior» no es la parte superior de la pantalla..pero la parte superior de la superview (que es el scollView).
    • Eso fue todo ! Se hizo el truco ! Estaba luchando con este tipo de problemas de scrollView autodiseño de la locura durante 2 días…. Gracias u tio !!!
    • he corregido en mi guión gráfico 2 meses atrás. Se me olvidó otra vez. Lol y volvió a la misma contesta 🙂 gracias bro
    • ahahah chicos yo no creo que para crear todo esto XD mis colegas en mi equipo a terminar en mi respuesta constantemente y yo trabajo junto a ellos. Tan divertido! XD cc/ @khunshan
    • No funciona. La vista no se desplaza de modo que el contentSize no cambia de tamaño automáticamente. ¿Por qué tanta votos para un consejo, que básicamente elimina los errores en IB, pero evita el desplazamiento? O me estoy perdiendo algo, que es lo que no se dice?
    • probablemente u están perdiendo algo. Hay casos especiales que puede resolverse con el vídeo que he mencionado en mi post. Tal vez u están en una de esas. Ver el video.
    • Me puse el contentView altura para un valor fijo y, a continuación, el desplazamiento funciona si la pantalla es más pequeña que la contentView. En el video se indique para establecer el contentView dimensiones iguales a la raíz de la vista de sus dimensiones. No entiendo cómo establecer el contentView dimensiones correctamente cuando la raíz de vista es más pequeño que el contentView.
    • ESTA RESPUESTA ES ERRÓNEA. VER EL VIDEO LINK EN LA RESPUESTA
    • El ScrollView es el elemento que es más grande que su superview. Por lo tanto, su altura es determinada por su contenido o directamente en un ajuste de altura. El ancho se puede ajustar a la superview en cuyo caso no habrá desplazamiento lateral.
    • Para todos los que enfrentan un problema con el ScrollView no desplazable, el establecimiento de contentView del fondo y centrar verticalmente limita con baja prioridad que se hizo el truco para mí!
    • Amigo de donde eres, quiero abrazarte ahora, yo estaba luchando con esto desde hace 2 días, bro me salvaste. Por CIERTO, en mi caso todo fue el mismo que el mencionado por usted, excepto una cosa es decir, centrar horizontal y verticalmente. ¿Puede por favor explicar lo que es la necesidad de centro de la alineación?
    • y cualquier otra persona que se topó el tema de: restricción de resolver los conflictos, scrollView no scroll… intente quitar el centro.x y en el centro.y en el contentView y en su lugar establecer el contentView altura y anchura igual a la del scrollview. establecer la igualdad de alturas restricción a una 250 prioridad
    • Si la escena tiene una barra de navegación, haga como se ha indicado anteriormente. Pero no se hace debido a que su contenido vista se tiene un espacio en blanco en la parte superior, debajo de la barra de navegación, tan alta como la barra de navegación de nuevo. Para arreglar eso, leer esto, en particular las respuestas por streem y Myxtic.
    • No está centrado superfluo?
    • ¿Por qué es el 'Content View'.height == View.height necesario? No debe su altura igual a su subvistas altura?
    • El vídeo de @Sergio publicado parecía estúpido al principio, pero tengo que admitir que lo hizo para mí. Creo que el punto aquí es que usted tiene que fijar a su contenido real (un uilabel o lo que sea) a la parte inferior de la contentView, y el contentView debe tener la anchura y tamaño igual a la de los padres de la scrollview – entonces la altura de la restricción debe tener baja prioridad si queremos que el desplazamiento vertical.
    • Este es uno de los mejores de desbordamiento de pila respuestas que me han llegado a través de. Usted señor, es un caballero y un erudito.
    • ^^ Este es uno de los mejores comentarios que he conseguido en StackOverflow XD Gracias, feliz de ayudar! 🙂
    • Sólo tuve que seguir los pasos 1 a 4 de la esta respuesta, debido a que el anterior y que el vídeo no me ayudan. Xcode 9, iOS 11.
    • eso es trabajar por un tiempo, pero no soy capaz de tocar los botones en la parte inferior
    • Sólo quería decir que yo todavía estaba teniendo problemas hasta que he colocado el elemento inferior de la vista del contenido (en mi caso un UILabel) a la parte inferior de la vista del contenido con Relación = «Mayor o Igual». Desplazamiento trabajado después de esto.
    • Si alguien está teniendo problemas con ello no desplazamiento de todo el tamaño del contenido de este vídeo ayudó a -> youtube.com/watch?v=nfHBCQ3c4Mg. (Básicamente, después de seguir el procedimiento anterior: 1. De forma libre ViewController en el guión gráfico. Cambio de la altura hasta que se abraza a su contenido. 2. Establecer el elemento más bajo de la parte inferior de contentView.
    • No puedo entender por qué, pero funciona! (Xcode 10)
    • La configuración de la parte inferior de la restricción de que el último elemento en la vista de contenido es la clave para el scrollview hacer es desplazable… Independientemente de todos los pasos seguidos en la respuesta, Tenemos que fijar la parte inferior de la restricción del último elemento.
    • Tenga en cuenta que mi respuesta es de 4,5 años de edad y que Apple trabajó en torno a este problema la aplicación de una solución similar en su sdk hace un par de años. Cualquiera que sea la solución que encontramos hoy en día no es la solución que se necesita cuando tuvimos iOS < 10.
    • Por desgracia, no parece estar trabajando en la actualidad.

  2. 93

    Este error me llevó un rato a la pista de abajo, inicialmente traté de fijación del ScrollView del tamaño, pero el mensaje de error dice claramente: «el tamaño del contenido». Me aseguré de que todo lo que cubrió desde la parte superior de la ScrollView también fue clavado en la parte inferior. De esa manera el ScrollView puede calcular su contenido de la altura por la búsqueda de la altura de todos los objetos & restricciones. Esto resuelve la ambigüedad del contenido de la altura, la anchura es bastante similar… al principio yo tenía la mayoría de las cosas X centrada en el ScrollView, pero yo tenía también el pasador de los objetos al lado de la ScrollView. No me gusta esto porque el iPhone6 podría tener una pantalla más amplia, pero le van a quitar el ‘ambiguo contenido de la anchura de error».

    • Gracias por tu respuesta! Si lo entiendo correctamente, puede lograr para quitar el error por la fijación de cada uno y cada una de las subvista en el ScrollView a la parte superior y la parte inferior. Sin embargo, esto no es necesario. Usted sólo tiene que asegurarse de que hay una manera de hacer una línea continua de las restricciones de la parte superior a la parte inferior de la scrollview. [-X-X-X] tengo la esperanza de que era comprensible ;>
    • Cómo solucionar el problema si la vista tiene una variable de la altura? ¿Cómo puedo configurar las restricciones para que el scrollview puede calcular los tamaños?
    • Yo creo que si el scrollview es de altura variable, no hay problemas de como esta advertencia se produce en tiempo de diseño, pero no afecta el tiempo de ejecución de la aplicación. Una altura variable scrollview debe tener cambia el tamaño es contentSize por el código.
    • De acuerdo a: stackoverflow.com/questions/17510135/… no es necesario cambiar el tamaño de la contentSize con diseño automático, pero no puedo conseguir trabajo, como se muestra allí o con la actualización de contentSize. Simplemente no se desplazable: loessl.org/~hashier/relpub_2/DynLabel.zip sólo tengo el mainView, scrollView, contentView, myLabel y, a continuación, establezca todas las restricciones, tal como se sugiere.
    • Yup. Esto funcionó para mí también. De hecho estoy seguro que al menos uno de los niños objeto tenía una restricción de espacio, espacio final, y su anchura.
    • ‘Usted sólo tiene que asegurarse de que hay una manera de hacer una línea continua de las restricciones de la parte superior a la parte inferior de la scrollview’ <- gracias por esa frase
    • «línea continua de las restricciones» es EXACTAMENTE correcto! De arriba a abajo y de izquierda a derecha
    • Lo que me ayudó fue asegurarse de que el desplazamiento de la vista se fija a la superview y no de la parte superior o inferior de guías de diseño. He quitado la restricción para la base de la guía de diseño y se fue a través del menú en lugar de interface builder. Editor -> Pin -> Espacio Inferior a Superview.
    • «Al principio yo tenía la mayoría de las cosas X centrada en el ScrollView.» – Así que, ¿cómo puedo conjunto de todos los puntos de vista de X-centrado en ScrollView para todos los iPhone pantallas a la vez? Yo en este caso no se puede establecer una estricta limita a las fronteras (porque tienen diferentes para todos los iPhones).
    • parece que he encontrado la forma de evitar el pin ver a los lados. Mira mi respuesta a continuación.
    • Si desea que el scrollview del ancho de seguir el ancho de la pantalla del teléfono o de cualquier otro elemento en la interfaz de usuario (como los que contienen UIView) que usted necesita para establecer «la igualdad de ancho» en la que mediante el uso de otro elemento que está fuera de la scrollview para medir.
    • muchas gracias hombre!!!!!!

  3. 61

    Es la respuesta para mi auto-respondió a la pregunta UIScrollView + Centrada Ver + Ambiguas Contenido Desplazable Tamaño + muchos tamaños de iPhone.

    Pero es cubrir la totalidad de su caso también!

    Así que este es el estado inicial para el caso más simple:

    1. scrollView con 0 restricciones a todos los bordes
    2. Botón centrado Horizontal y Vertical con de Ancho fijo y Altura restricciones
    3. Y, por supuesto – advertencias molestas Has ambiguous scrollable content width y Has ambiguous scrollable content height.

    UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

    De todo, lo que tenemos que hacer es:

    • Agregar 2 restricciones adicionales, por ejemplo «0» para trailing y/o inferior espacio para nuestro punto de vista (vea el ejemplo en la imagen de abajo).

    Importante: tienes que añadir cola y/o en la parte inferior restricciones. No «y líder de la parte superior» que no funciona!

    UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

    Se puede comprobar en mi proyecto de ejemplo, que la demostración de cómo solucionar este problema.

    P. S.

    Según la lógica de esta acción debe provocar el «conflicto de las restricciones». Pero no!

    No sé por qué funciona y cómo Xcode detecta que la restricción es más prioritario (porque yo no soy establecer la prioridad para estas restricciones expresamente).
    Estaré agradecido si alguien explicar, por qué funciona en los comentarios de abajo.

    • Gran consejo! Terminé la creación de una restricción en el borde inferior y el conjunto de prioridad media o baja
    • trailing o inferior hizo la magia, raro.
    • Wow! Esto en serio no tiene ningún sentido, pero funciona! Gracias! El último elemento que tengo en mi punto de vista me puse la parte inferior de la restricción de 0, y la EXPLOSIÓN. Finalmente se trabajó.
  4. 48

    Usted necesita para crear un UIView como una subvista de la UIScrollView como se describe a continuación:

    • UIViewController
    • UIView ‘Vista Principal’
      • UIScrollView
        • UIView ‘Contenedor De Vista’
          • [El contenido]

    El segundo paso es hacer la UIScrollView restricciones. Yo lo hice con la parte superior, inferior, anterior y posterior restricciones a su superView.

    A continuación he añadido las restricciones para el contenedor de UIScrollView y aquí es donde comienza el problema. Cuando usted pone las mismas restricciones (superior, inferior, anterior y posterior), el Guión da un mensaje de advertencia:

    «Ha ambiguo contenido desplazable ancho» y «Ha ambiguo contenido desplazable en altura»

    Continuar con las mismas restricciones de arriba, y sólo tiene que añadir las limitaciones Equal Height y Equal Width a su Contenedor de Vista en relación a la Vista Principal y no su UIScrollView. En otras palabras, el Contenedor de Vista las limitaciones están ligados a la UIScrollView‘s superview.

    Después de que usted no tendrá advertencias en su Guión y usted puede continuar agregando las restricciones para su subvistas.

    • De acuerdo – creo que la adición de un contenedor de vista es el mejor, más fácil de mantener solución.
    • Esta solución funciona cuando no tienes la barra de navegación para administrar.
  5. 34

    iOS 12, Swift 4

    La manera más simple de usar autolayout:

    1. Agregar UIScrollView y el pin 0,0,0,0 a superview (o el tamaño que desee)
    2. Agregar UIView en ScrollView, el pin 0,0,0,0 a los 4 lados y en el centro se horizontally y vertically.
    3. En tamaño inspector, cambio bottom y align center Y prioridad a 250. (para desplazamiento horizontal cambiar trailing y align center X)
    4. Agregar todos los puntos de vista que usted necesita en este punto de vista. No olvides para fijar la parte inferior de la restricción en el nivel más bajo de la vista.
    • Yo era incapaz de configurar el contenido de la altura de scrollview, pero funciona. 🙂
    • Sugerencia: por que me ha funcionado solo, si me quitan el centro horizontal y verticalmente, y la sustitución de ésta con la misma anchura (scrollView + vista dentro de scrollView) Y la adición de la altura en función del contenido, lo que significa que el último elemento de la vista de la necesidad de un fondo de limitación. Mira aquí para más información: stackoverflow.com/a/54577278/5056173
    • Sean, estoy usando esta, literalmente, todos los días y nunca he tenido un problema con este enfoque cuando se trata vertical y horizontal scrollview de desplazamiento. Tal vez se le olvidó poner un fondo de restricción en el nivel más bajo/último elemento. Sin eso, esto no va a funcionar.
    • Punto número 4 – segunda frase es la más grande.
  6. 24

    Finalmente me di cuenta de esto, espero que esto sea más fácil de entender.

    Menudo se puede evitar que la advertencia mediante la adición de una base de UIView para el scrollview como una «vista de contenido», como se ha mencionado y hacer que sea del mismo tamaño que la de desplazamiento de la vista y, en esta vista de contenido, establecer estos 6 parámetros.

    UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

    Como usted puede ver, usted necesita un total de 6 parámetros! Que.. en circunstancias normales, usted está duplicando 2 limitaciones pero este es el camino para evitar este guión de error.

    • El de arriba casi trabajó para mí, como yo estoy preocupado por 3 diferentes anchos de pantalla (4/5, 6, 6+) me puse a la vista del contenido y de desplazamiento fin de disponer de anchos iguales. Tienes razón, es un duplicado como ya he dicho a la vista del contenido del 0 principio y del final del espacio.
    • Puede establecer la misma anchura y altura de las limitaciones de la vista de contenido para desplazarse a la vista, en lugar de valores constantes. Esto funciona en todas las resoluciones.
    • Tengo que implementar mismo, así que me pueden ayudar que tengo que ser igual a la altura y la anchura de ambas vista del contenido y de desplazamiento de la vista?
    • Podría ser digno de la comprobación para ver si usted todavía tiene que hacer esto. He creado un imageView en un scrollview recientemente y fue capaz de salirse con la configuración de sólo el 4 restricciones que se muestra en la parte superior para hacer que el error desaparezca en Xcode 8.3
    • Que sin duda necesita para agregar una base de UIView para el scrollview como un «ver contenido» NO es CIERTO. He pensado que lo mismo. Pero recientemente me enteré de que hay varias formas de instalación de un scrollView. Me parece que muchas veces la razón por la scrollView está confundido sobre lo que debe hacer es porque la gente es la mezcla de los diferentes enfoques a la vez! Consulte aquí para los diferentes enfoques.
    • esto fue publicado hace más de 3 años. Han mejorado los storyboards desde entonces. Me di cuenta demasiado usted puede conseguir lejos sin que el contenido de la vista ahora. Voy a ajustar mi respuesta.
    • La edición, es vaga. Se puede tratar de una forma más descriptiva editar?

  7. 15

    Sé que puede ser tarde, pero la próxima solución resuelve este tipo de problemas sin código adicional, sólo el uso de storyboards:

    Por su contenido en vista de la necesidad de establecer restricciones para avance y retroceso/parte superior/inferior de espacios para el scrollview y esto no va a cambiar la vista del contenido del marco de, como este: UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

    Por supuesto, usted necesita para crear restricciones adicionales para el contenido de la vista para desplazarse vista podría saber el tamaño del contenido. Por ejemplo, conjunto de altura fija y el centro x.

    Espero que esto ayude.

  8. 3

    Ver más abajo: vista del contenido en scrollview vertical y horizontal centralizado.
    tienes la ambigüedad de error, asegúrese siempre de que dos de añadido en scrollview de su contenido a la vista es 1).botón de espacio para el recipiente.2)espacio al final de la restricción que se pone de manifiesto en la captura de pantalla,

    estos restricción de los medios de desplazamiento es cuánto puede desplazarse después de su contenido a la vista de la altura o la anchura.

    UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

    puede ayudar.

  9. 2

    @Matteo Gobbi la respuesta es perfecta, pero en mi caso, el scrollview no pueda desplazarse, me retire «alinear en el centro Y» y agregar «altura >=1«, el scrollview se convirtió en desplazable

  10. 2

    Para mí la adición de un contentView en realidad no funciona como se sugiere. Por otra parte, se crea una sobrecarga debido a la mayor vista (aunque no considero esto un gran problema). Lo que funcionó mejor para mí era sólo para apague la ambigüedad de comprobación de para mi scrollView. Todo está sentando muy bien así que me parece bien en casos sencillos como el mío. Pero hay que tener en cuenta, que si otras restricciones para su scrollView descanso, la Interfaz del Generador de no advertir más información al respecto.

    UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

    • Esto le acaba de quitar de advertencia y no hacer nada para resolver el problema.
    • Usted. son. mi. héroe. No se dio cuenta de esto existió y estoy encantado de encontrar! Traté de «Comprobar Sólo la Posición de» el que espera, no sé, compruebe la posición, pero no permite que este buggy «contenido» tamaño de la cuestión. Tengo que ir con «Nunca » Verificar». Gracias!
  11. 2

    Personas que están luchando con uiscrollview no de desplazamiento sólo tienes que configurar la vista del contenido de la parte inferior de restricción con su última vista de la parte inferior de la distribución (que es dentro de su contenido a la vista). No te olvides de quitar el centro Y la restricción.

    Resto de todas las limitaciones son las mismas que se definieron anteriormente. Scrollview sólo se preocupan de conseguir la máxima altura de su contenido ver, y estamos estableciendo como última vista de la parte inferior de la restricción, lo que significa que scrollview automáticamente cambiará su contenido offset.

    En mi caso fue vista por última vez UILable con ninguna de las líneas de propiedad = 0(lo que automáticamente ajustar su altura dependiendo de su contenido) por lo que aumenta de manera dinámica uilable la altura y, finalmente, nuestra área desplazable aumenta debido a uilable inferior del diseño está alineado con nuestra vista del contenido de la parte inferior, lo que obliga scrollview para aumentar el contenido en offset.

  12. 2

    Hice un video en youTube

    Desplácese StackViews utilizando sólo Storyboard en Xcode

    Yo creo que 2 el tipo de escenarios que pueden aparecer aquí.

    La vista en el interior del scrollView –

    1. no tiene ningún intrínseca Tamaño del contenido (e.g UIView)
    2. tiene sus propias Tamaño del contenido (e.g UIStackView)

    Para un verticalmente desplazable de la vista en ambos casos es necesario agregar estas restricciones:

    1. 4 restricciones de arriba, izquierda, abajo y derecha.

    2. Igual ancho, a scrollview (para detener el desplazamiento horizontal)

    Usted no necesita ninguna otra restricción para las vistas que tiene su propio contenido intrínseco de altura.

    UIScrollView Contenido Desplazable Tamaño De La Ambigüedad


    Para las vistas que no tienen ningún contenido intrínseco de la altura, es necesario agregar una restricción de altura. La vista se desplazará sólo si la altura de la restricción es mayor que la altura de la scrollView.

    UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

  13. 2

    He resuelto este tipo de problema para mi punto de vista mediante el uso de «Resolver auto con problemas de diseño» > «Agregar falta de restricciones» para la Vista Seleccionada
    UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

    Las dos restricciones siguientes resolver mi problema:

    trailing = Stack View.trailing - 10
    bottom = Stack View.bottom + 76

    en el que:
    trailing, inferior, la cola, la parte inferior de UIScrollView

    • Esto funcionó para mí por la adición de un «a fondo» de la restricción. Ahora que lo pienso, tiene perfecto sentido.
  14. 1

    Utilizando contentView (UView) como contenedor dentro de UIScrollView, se adhieren a los bordes (top, bottom, trailing, leading) de superview (UIScrollView) y contentView debe tener equalwidth y equalheight a superview. Esas son las restricciones. Y la llamada de método:

    -(void)viewDidLayoutSubviews
    {
        [super viewDidLayoutSubviews];
        self.scrollView.contentSize = self.contentView.frame.size;
    }

    Problemas resueltos para mí.

  15. 1

    Desplazamiento Vertical

    1. Agregar un UIScrollView con restricciones 0,0,0,0 a superview.
    2. Agregar un UIView en ScrollView, con las limitaciones 0,0,0,0 a superview.
    3. Agregar mismo ancho de restricción para UIView a UIScrollView.
    4. A aumentar la Altura de UIView.
    5. Agregar elementos con restricciones para el UIView.
    6. Para el elemento más cercano a la parte inferior, asegúrese de que tiene una restricción a la parte inferior de UIView.
  16. 1
    import UIKit
    class ViewController: UIViewController {
    //
        let scrollView: UIScrollView = {
    let sv = UIScrollView()
    sv.translatesAutoresizingMaskIntoConstraints = false
    return sv
    }()
    let lipsumLbl: UILabel = { //you can use here any of your subview
    
    let lbl = UILabel()
    lbl.translatesAutoresizingMaskIntoConstraints = false
    lbl.text = """
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce eleifend nisi sit amet mi aliquet, ut efficitur risus pellentesque. Phasellus nulla justo, scelerisque ut libero id, aliquet ullamcorper lectus. Integer id iaculis nibh. Duis feugiat mi vitae magna tincidunt, vitae consequat dui tempor. Donec blandit urna nec urna volutpat, sit amet sagittis massa fringilla. Pellentesque luctus erat nec dui luctus, sed maximus urna fermentum. Nullam purus nibh, cursus vel ex nec, pulvinar lobortis leo. Proin ac libero rhoncus, bibendum lorem sed, congue sapien. Donec commodo, est non mollis malesuada, nisi massa tempus ipsum, a varius quam lorem vitae nunc.
    Cras scelerisque nisi dolor, in gravida ex ornare a. Interdum et malesuada fames ac ante ipsum primis in faucibus. Maecenas vitae nisl id erat sollicitudin accumsan sit amet viverra sapien. Etiam scelerisque vulputate ante. Donec magna nibh, pharetra sed pretium ac, feugiat sit amet mi. Vestibulum in ipsum vitae dui vehicula pulvinar eget ut lectus. Fusce sagittis a elit ac elementum. Fusce iaculis nunc odio, at fermentum dolor varius et. Suspendisse consectetur congue massa non gravida. Sed id elit vitae nulla aliquam euismod. Pellentesque accumsan risus dolor, eu cursus nibh semper id.
    Vestibulum vel tortor tellus. Suspendisse potenti. Pellentesque id sapien eu augue placerat dictum. Fusce tempus ligula at diam lacinia congue in ut metus. Maecenas volutpat tellus in tellus maximus imperdiet. Integer dignissim condimentum lorem, id luctus nisi maximus at. Nulla pretium, est sit amet mollis eleifend, tellus nulla viverra dolor, ac feugiat massa risus a lectus. Pellentesque ut pulvinar urna, blandit gravida ipsum. Nullam volutpat arcu nec fringilla auctor. Integer egestas enim commodo, faucibus neque ac, rutrum magna. Vivamus tincidunt rutrum auctor. Cras at rutrum felis. Fusce elementum lorem ut pharetra venenatis.
    """
    lbl.textColor = .darkGray
    lbl.font = UIFont.systemFont(ofSize: 16)
    lbl.numberOfLines = 0
    return lbl
    }()
    //======================================================================//
        //
        //MARK:- viewDidLoad
        //
        override func viewDidLoad() {
    super.viewDidLoad()
    setupViews()
    setupAutoLayout()
    }
    func setupViews() {
    title = "ScrollView Demo"
    view.backgroundColor = .white
    view.addSubview(scrollView)
    scrollView.addSubview(lipsumLbl)
    }
    func setupAutoLayout() {
    scrollView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
    scrollView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
    scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    lipsumLbl.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor).isActive = true
    lipsumLbl.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
    lipsumLbl.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
    lipsumLbl.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
    lipsumLbl.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
    }
    }

    De salida:

    UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

  17. 0

    Lo que hice es crear una vista de contenido, como se muestra aquí.

    La vista del contenido es libre y tiene todas las subvistas añadido con sus propias limitaciones en relación a la contentView.

    La UIScrollView se agrega a la principal controlador de vista.

    A través de programación puedo añadir el contentView que está vinculado a través de IBOutlet la clase y el conjunto de la contentView de UIScrollView.

    UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

  18. 0

    Estaba recibiendo el mismo error.. me han hecho la siguiente

    1. Vista(Superview)
    2. ScrollView 0,0,600,600
    3. UIView dentro de ScrollView : 0,0,600,600
    4. UIView contiene de vista de imagen , etiqueta

    Ahora agregar de avance y retroceso/superior/inferior para scrollView(2), a continuación, UIView(3).

    Seleccione Ver(1) y Opinión(3) establece igualmente la altura y el peso.. su solucionado mi problema.

    He hecho el video que te ayuda :

    https://www.youtube.com/watch?v=s-CPN3xZS1A

  19. 0

    [probado en XCode 7.2 y para iOS 9.2]

    Lo que suprimió el Guión errores y advertencias para mí fue la creación de la intrínseca tamaño de la desplácese a la vista y a la vista del contenido (en mi caso, un stackview) a Marcador de posición. Esta configuración se encuentra en el Tamaño de inspector en el Guión gráfico. Y se dice que el Establecimiento de un tiempo de diseño intrínseco tamaño del contenido sólo afecta a una vista, mientras que la edición en el Interface Builder. La vista no tiene esta intrínseca del tamaño del contenido en tiempo de ejecución.

    Así, supongo que no vamos mal por la configuración de este.

    Nota: En el guión gráfico, me han colgado todos los bordes de scrollview para el superview y todos los bordes de stackview para el scrollview. En mi código, me he puesto el translatesAutoresizingMaskIntoConstraints como false para el scrollview y la stackview. Y yo no he mencionado un tamaño del contenido. Cuando el stackview crece dinámicamente, el conjunto de restricciones en el guión gráfico asegúrese de que la pila es desplazable.

    El guión de advertencia me estaba volviendo loca y no quería centro de las cosas, horizontal o verticalmente, sólo para suprimir la advertencia.

  20. 0

    Si alguien es conseguir un comportamiento donde se observe la barra de desplazamiento a la derecha desplaza pero el contenido no se mueve, este hecho probablemente vale la pena considerar:

    También puede utilizar las restricciones entre el desplazamiento de la vista del contenido y de los objetos fuera de la vista de desplazamiento para proporcionar una posición fija para el desplazamiento de la vista del contenido, haciendo que el contenido parezca flotar sobre el desplazamiento de la vista.

    Que la de Apple documentación. Por ejemplo , si usted accidentalmente atrapado su Etiqueta de la parte superior/Botón/Img/Vista a la vista fuera de la área de desplazamiento (tal vez un encabezado o algo justo por encima de la scrollView?) en lugar de la contentView, tendría que congelar toda su contentView en su lugar.

  21. 0

    Como se menciona en las respuestas anteriores, usted debe agregar una vista personalizada dentro de la desplácese a la vista:

    UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

    Agregar todas tus subvistas a la vista del contenido.
    En algún momento usted va a ver un desplazamiento de la vista de contenido ha ambiguo contenido de advertencia de tamaño, usted debe seleccionar la vista de contenido y haga clic en «Resolver diseño automático cuestiones» (en la esquina inferior derecha de la oficina internacional de diseño), y seleccione la opción «Agregar faltan las limitaciones de la» opción.

    UIScrollView Contenido Desplazable Tamaño De La Ambigüedad

    A partir de ahora cuando se ejecute el proyecto, el desplazamiento de la vista, se actualizará automáticamente su contenido, el tamaño, el código adicional no es necesario.

  22. 0

    Usted sólo tiene que asegurarse de que hay una manera de hacer una permanente
    línea de restricciones desde la parte superior a la parte inferior de la scrollview.
    [-X-X-X]

    En mi caso, un desplazamiento horizontal de desplazamiento de la vista – yo también necesitaba añadir la anchura y la altura de las restricciones para cada niño del desplazamiento del punto de vista, aunque Técnico de Apple nota no decirte esto.

  23. 0

    Swift 4+ enfoque:

    1) Establecer UIScrollView superior, inferior, izquierdo y derecho de los márgenes a 0

    2) Dentro de la UIScrollView agregar un UIView y establecer superior, inferior, que conduce, a la cola de los márgenes a 0 ( igual a UIScrollView márgenes ).

    3) La parte más importante es establecer la anchura y la altura, donde la altura de la restricción debe tener una baja prioridad.

    private func setupConstraints() {
    //Constraints for scrollView
        scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
    scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    //Constraints for containerView
        containerView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
    containerView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
    containerView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor).isActive = true
    containerView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor).isActive = true
    containerView.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true
    let heightConstraint = containerView.heightAnchor.constraint(equalTo: scrollView.heightAnchor)
    heightConstraint.priority = UILayoutPriority(rawValue: 250)
    heightConstraint.isActive = true
    }
  24. -2

    todas las subvistas dentro de un scrollview debe tener restricciones de tocar todos los bordes de las barras de desplazamiento de la vista, como se explica en la documentación, la altura y la anchura de un desplazamiento de la vista es calculado automáticamente por las medidas de las subvistas, esto significa que debe haber detrás y principales limitaciones para la anchura y la parte Superior e Inferior de las restricciones de altura.

  25. -3

    Creo que es de 10 segundos de trabajo a partir de ahora. He observado que en XCode 7.3 y un video sobre el mismo. Marque aquí:

    https://www.youtube.com/watch?v=yETZKqdaPiI

    Todo lo que tienes que hacer, añadir una subvista a UIScrollView con la misma anchura y altura. A continuación, seleccione ViewController y pulse Reset to suggested constraint. Por favor, compruebe el vídeo para una comprensión más clara.

    Gracias

Dejar respuesta

Please enter your comment!
Please enter your name here