Custom ion-icon with SVG files made on Inkscape in Ionic 5 - ionic-framework
I'm having troubles displaying a custom ion-icon with a custom SVG made on Inkscape. My icon is received by the site (I can see it in the network tab in the Firefox developer tools) but its div container is empty.
I'm trying to display the icon in an ion-item like that:
<ion-item button>
<ion-icon name="custom-logo" slot="start"></ion-icon>
<ion-label>Account</ion-label>
</ion-item>
I've configured the angular.json file, that's not the problem. I'm just applying this style-sheet rule to it:
ion-icon {
color: var(--ion-color-dark);
}
Here's the result of the HTML page I get on my browser (an empty div.icon-inner):
<ion-icon _ngcontent-dxl-c134="" name="custom-logo" slot="start" ng-reflect-name="custom-logo" role="img" class="md hydrated" aria-label="custom logo">
#shadow-root (open)
<style>…</style>
<div class="icon-inner"></div>
</ion-icon>
My custom SVG file looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<svg width="6.35mm" height="6.3489mm" version="1.1" viewBox="0 0 6.35 6.3489" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Custom Logo</title>
<defs>
<linearGradient id="linearGradient1106">
<stop stop-color="#fff" offset="0"/>
<stop stop-color="#646464" offset="1"/>
</linearGradient>
<linearGradient id="linearGradient1362-1" x1="63.286" x2="140.95" y1="540.13" y2="461.71" gradientTransform="translate(426.24 17.287)" gradientUnits="userSpaceOnUse">
<stop stop-color="#ff3e3b" offset="0"/>
<stop stop-color="#2120ff" offset="1"/>
</linearGradient>
<clipPath id="clipPath1328-8">
<circle cx="78.738" cy="583.32" r="40.831" fill="none" stroke-opacity="0"/>
</clipPath>
<linearGradient id="linearGradient1689" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(373.26 -207.84)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1691" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(393.67 -207.84)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1693" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(373.26 -187.43)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1695" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(393.67 -187.43)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1697" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(414.09 -207.84)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1699" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(414.09 -187.43)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1701" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(414.09 -228.25)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1703" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(393.67 -228.25)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1705" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(373.26 -228.25)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1707" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(434.5 -228.25)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1709" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(434.5 -207.84)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1711" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(434.5 -187.43)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1713" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(373.26 -167.02)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1715" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(393.67 -167.02)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1717" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(414.09 -167.02)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
<linearGradient id="linearGradient1719" x1="54.051" x2="74.461" y1="544.29" y2="564.7" gradientTransform="translate(434.5 -167.02)" gradientUnits="userSpaceOnUse" xlink:href="#linearGradient1106"/>
</defs>
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title>Custom Logo</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="translate(-497.12 -466.94)">
<g transform="matrix(.077312 0 0 .077312 458.69 430.84)">
<g transform="matrix(1.0048 0 0 1.0048 459.12 -78.133)" clip-path="url(#clipPath1328-8)" fill-rule="evenodd" stroke="#646464" stroke-width=".01">
<rect transform="rotate(45)" x="427.31" y="336.44" width="20.411" height="20.411" fill="url(#linearGradient1689)" opacity=".84828"/>
<rect transform="rotate(45)" x="447.73" y="336.44" width="20.411" height="20.411" fill="url(#linearGradient1691)" opacity=".84828"/>
<rect transform="rotate(45)" x="427.31" y="356.85" width="20.411" height="20.411" fill="url(#linearGradient1693)" opacity=".84828"/>
<rect transform="rotate(45)" x="447.73" y="356.85" width="20.411" height="20.411" fill="url(#linearGradient1695)" opacity=".84828"/>
<rect transform="rotate(45)" x="468.14" y="336.44" width="20.411" height="20.411" fill="url(#linearGradient1697)" opacity=".84828"/>
<rect transform="rotate(45)" x="468.14" y="356.85" width="20.411" height="20.411" fill="url(#linearGradient1699)" opacity=".84828"/>
<rect transform="rotate(45)" x="468.14" y="316.03" width="20.411" height="20.411" fill="url(#linearGradient1701)" opacity=".84828"/>
<rect transform="rotate(45)" x="447.73" y="316.03" width="20.411" height="20.411" fill="url(#linearGradient1703)" opacity=".84828"/>
<rect transform="rotate(45)" x="427.31" y="316.03" width="20.411" height="20.411" fill="url(#linearGradient1705)" opacity=".84828"/>
<rect transform="rotate(45)" x="488.55" y="316.03" width="20.411" height="20.411" fill="url(#linearGradient1707)" opacity=".84828"/>
<rect transform="rotate(45)" x="488.55" y="336.44" width="20.411" height="20.411" fill="url(#linearGradient1709)" opacity=".84828"/>
<rect transform="rotate(45)" x="488.55" y="356.85" width="20.411" height="20.411" fill="url(#linearGradient1711)" opacity=".84828"/>
<rect transform="rotate(45)" x="427.31" y="377.26" width="20.411" height="20.411" fill="url(#linearGradient1713)" opacity=".84828"/>
<rect transform="rotate(45)" x="447.73" y="377.26" width="20.411" height="20.411" fill="url(#linearGradient1715)" opacity=".84828"/>
<rect transform="rotate(45)" x="468.14" y="377.26" width="20.411" height="20.411" fill="url(#linearGradient1717)" opacity=".84828"/>
<rect transform="rotate(45)" x="488.55" y="377.26" width="20.411" height="20.411" fill="url(#linearGradient1719)" opacity=".84828"/>
</g>
<circle cx="538.18" cy="508" r="41.026" fill="url(#linearGradient1362-1)" opacity=".84828" stroke-opacity="0"/>
<g transform="translate(284.25 -120.42)" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="9.265">
<path d="m275.06 612.13c-6.2367 14.552-12.473 29.104-18.93 32.191-6.457 3.0868-13.134-5.2915-19.812-13.67" stroke="#212620" stroke-opacity=".39024"/>
<path d="m271.55 611.85c-6.2367 14.552-12.473 29.104-18.93 32.191-6.457 3.0868-13.134-5.2915-19.812-13.67" stroke="#fff"/>
</g>
</g>
</g>
<script id="mesh_polyfill" type="text/javascript">!function(){const t="http://www.w3.org/2000/svg",e="http://www.w3.org/1999/xlink",s="http://www.w3.org/1999/xhtml",r=2;if(document.createElementNS(t,"meshgradient").x)return;const n=(t,e,s,r)=>{let n=new x(.5*(e.x+s.x),.5*(e.y+s.y)),o=new x(.5*(t.x+e.x),.5*(t.y+e.y)),i=new x(.5*(s.x+r.x),.5*(s.y+r.y)),a=new x(.5*(n.x+o.x),.5*(n.y+o.y)),h=new x(.5*(n.x+i.x),.5*(n.y+i.y)),l=new x(.5*(a.x+h.x),.5*(a.y+h.y));return[[t,o,a,l],[l,h,i,r]]},o=t=>{let e=t[0].distSquared(t[1]),s=t[2].distSquared(t[3]),r=.25*t[0].distSquared(t[2]),n=.25*t[1].distSquared(t[3]),o=e>s?e:s,i=r>n?r:n;return 18*(o>i?o:i)},i=(t,e)=>Math.sqrt(t.distSquared(e)),a=(t,e)=>t.scale(2/3).add(e.scale(1/3)),h=t=>{let e,s,r,n,o,i,a,h=new g;return t.match(/(\w+\(\s*[^)]+\))+/g).forEach(t=>{let l=t.match(/[\w.-]+/g),d=l.shift();switch(d){case"translate":2===l.length?e=new g(1,0,0,1,l[0],l[1]):(console.error("mesh.js: translate does not have 2 arguments!"),e=new g(1,0,0,1,0,0)),h=h.append(e);break;case"scale":1===l.length?s=new g(l[0],0,0,l[0],0,0):2===l.length?s=new g(l[0],0,0,l[1],0,0):(console.error("mesh.js: scale does not have 1 or 2 arguments!"),s=new g(1,0,0,1,0,0)),h=h.append(s);break;case"rotate":if(3===l.length&&(e=new g(1,0,0,1,l[1],l[2]),h=h.append(e)),l[0]){r=l[0]*Math.PI/180;let t=Math.cos(r),e=Math.sin(r);Math.abs(t)<1e-16&&(t=0),Math.abs(e)<1e-16&&(e=0),a=new g(t,e,-e,t,0,0),h=h.append(a)}else console.error("math.js: No argument to rotate transform!");3===l.length&&(e=new g(1,0,0,1,-l[1],-l[2]),h=h.append(e));break;case"skewX":l[0]?(r=l[0]*Math.PI/180,n=Math.tan(r),o=new g(1,0,n,1,0,0),h=h.append(o)):console.error("math.js: No argument to skewX transform!");break;case"skewY":l[0]?(r=l[0]*Math.PI/180,n=Math.tan(r),i=new g(1,n,0,1,0,0),h=h.append(i)):console.error("math.js: No argument to skewY transform!");break;case"matrix":6===l.length?h=h.append(new g(...l)):console.error("math.js: Incorrect number of arguments for matrix!");break;default:console.error("mesh.js: Unhandled transform type: "+d)}}),h},l=t=>{let e=[],s=t.split(/[ ,]+/);for(let t=0,r=s.length-1;t<r;t+=2)e.push(new x(parseFloat(s[t]),parseFloat(s[t+1])));return e},d=(t,e)=>{for(let s in e)t.setAttribute(s,e[s])},c=(t,e,s,r,n)=>{let o,i,a=[0,0,0,0];for(let h=0;h<3;++h)e[h]<t[h]&&e[h]<s[h]||t[h]<e[h]&&s[h]<e[h]?a[h]=0:(a[h]=.5*((e[h]-t[h])/r+(s[h]-e[h])/n),o=Math.abs(3*(e[h]-t[h])/r),i=Math.abs(3*(s[h]-e[h])/n),a[h]>o?a[h]=o:a[h]>i&&(a[h]=i));return a},u=[[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0],[-3,3,0,0,-2,-1,0,0,0,0,0,0,0,0,0,0],[2,-2,0,0,1,1,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0],[0,0,0,0,0,0,0,0,-3,3,0,0,-2,-1,0,0],[0,0,0,0,0,0,0,0,2,-2,0,0,1,1,0,0],[-3,0,3,0,0,0,0,0,-2,0,-1,0,0,0,0,0],[0,0,0,0,-3,0,3,0,0,0,0,0,-2,0,-1,0],[9,-9,-9,9,6,3,-6,-3,6,-6,3,-3,4,2,2,1],[-6,6,6,-6,-3,-3,3,3,-4,4,-2,2,-2,-2,-1,-1],[2,0,-2,0,0,0,0,0,1,0,1,0,0,0,0,0],[0,0,0,0,2,0,-2,0,0,0,0,0,1,0,1,0],[-6,6,6,-6,-4,-2,4,2,-3,3,-3,3,-2,-1,-2,-1],[4,-4,-4,4,2,2,-2,-2,2,-2,2,-2,1,1,1,1]],f=t=>{let e=[];for(let s=0;s<16;++s){e[s]=0;for(let r=0;r<16;++r)e[s]+=u[s][r]*t[r]}return e},p=(t,e,s)=>{const r=e*e,n=s*s,o=e*e*e,i=s*s*s;return t[0]+t[1]*e+t[2]*r+t[3]*o+t[4]*s+t[5]*s*e+t[6]*s*r+t[7]*s*o+t[8]*n+t[9]*n*e+t[10]*n*r+t[11]*n*o+t[12]*i+t[13]*i*e+t[14]*i*r+t[15]*i*o},y=t=>{let e=[],s=[],r=[];for(let s=0;s<4;++s)e[s]=[],e[s][0]=n(t[0][s],t[1][s],t[2][s],t[3][s]),e[s][1]=[],e[s][1].push(...n(...e[s][0][0])),e[s][1].push(...n(...e[s][0][1])),e[s][2]=[],e[s][2].push(...n(...e[s][1][0])),e[s][2].push(...n(...e[s][1][1])),e[s][2].push(...n(...e[s][1][2])),e[s][2].push(...n(...e[s][1][3]));for(let t=0;t<8;++t){s[t]=[];for(let r=0;r<4;++r)s[t][r]=[],s[t][r][0]=n(e[0][2][t][r],e[1][2][t][r],e[2][2][t][r],e[3][2][t][r]),s[t][r][1]=[],s[t][r][1].push(...n(...s[t][r][0][0])),s[t][r][1].push(...n(...s[t][r][0][1])),s[t][r][2]=[],s[t][r][2].push(...n(...s[t][r][1][0])),s[t][r][2].push(...n(...s[t][r][1][1])),s[t][r][2].push(...n(...s[t][r][1][2])),s[t][r][2].push(...n(...s[t][r][1][3]))}for(let t=0;t<8;++t){r[t]=[];for(let e=0;e<8;++e)r[t][e]=[],r[t][e][0]=s[t][0][2][e],r[t][e][1]=s[t][1][2][e],r[t][e][2]=s[t][2][2][e],r[t][e][3]=s[t][3][2][e]}return r};class x{constructor(t,e){this.x=t||0,this.y=e||0}toString(){return`(x=${this.x}, y=${this.y})`}clone(){return new x(this.x,this.y)}add(t){return new x(this.x+t.x,this.y+t.y)}scale(t){return void 0===t.x?new x(this.x*t,this.y*t):new x(this.x*t.x,this.y*t.y)}distSquared(t){let e=this.x-t.x,s=this.y-t.y;return e*e+s*s}transform(t){let e=this.x*t.a+this.y*t.c+t.e,s=this.x*t.b+this.y*t.d+t.f;return new x(e,s)}}class g{constructor(t,e,s,r,n,o){void 0===t?(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0):(this.a=t,this.b=e,this.c=s,this.d=r,this.e=n,this.f=o)}toString(){return`affine: ${this.a} ${this.c} ${this.e} \n ${this.b} ${this.d} ${this.f}`}append(t){t instanceof g||console.error("mesh.js: argument to Affine.append is not affine!");let e=this.a*t.a+this.c*t.b,s=this.b*t.a+this.d*t.b,r=this.a*t.c+this.c*t.d,n=this.b*t.c+this.d*t.d,o=this.a*t.e+this.c*t.f+this.e,i=this.b*t.e+this.d*t.f+this.f;return new g(e,s,r,n,o,i)}}class w{constructor(t,e){this.nodes=t,this.colors=e}paintCurve(t,e){if(o(this.nodes)>r){const s=n(...this.nodes);let r=[[],[]],o=[[],[]];for(let t=0;t<4;++t)r[0][t]=this.colors[0][t],r[1][t]=(this.colors[0][t]+this.colors[1][t])/2,o[0][t]=r[1][t],o[1][t]=this.colors[1][t];let i=new w(s[0],r),a=new w(s[1],o);i.paintCurve(t,e),a.paintCurve(t,e)}else{let s=Math.round(this.nodes[0].x);if(s>=0&&s<e){let r=4*(~~this.nodes[0].y*e+s);t[r]=Math.round(this.colors[0][0]),t[r+1]=Math.round(this.colors[0][1]),t[r+2]=Math.round(this.colors[0][2]),t[r+3]=Math.round(this.colors[0][3])}}}}class m{constructor(t,e){this.nodes=t,this.colors=e}split(){let t=[[],[],[],[]],e=[[],[],[],[]],s=[[[],[]],[[],[]]],r=[[[],[]],[[],[]]];for(let s=0;s<4;++s){const r=n(this.nodes[0][s],this.nodes[1][s],this.nodes[2][s],this.nodes[3][s]);t[0][s]=r[0][0],t[1][s]=r[0][1],t[2][s]=r[0][2],t[3][s]=r[0][3],e[0][s]=r[1][0],e[1][s]=r[1][1],e[2][s]=r[1][2],e[3][s]=r[1][3]}for(let t=0;t<4;++t)s[0][0][t]=this.colors[0][0][t],s[0][1][t]=this.colors[0][1][t],s[1][0][t]=(this.colors[0][0][t]+this.colors[1][0][t])/2,s[1][1][t]=(this.colors[0][1][t]+this.colors[1][1][t])/2,r[0][0][t]=s[1][0][t],r[0][1][t]=s[1][1][t],r[1][0][t]=this.colors[1][0][t],r[1][1][t]=this.colors[1][1][t];return[new m(t,s),new m(e,r)]}paint(t,e){let s,n=!1;for(let t=0;t<4;++t)if((s=o([this.nodes[0][t],this.nodes[1][t],this.nodes[2][t],this.nodes[3][t]]))>r){n=!0;break}if(n){let s=this.split();s[0].paint(t,e),s[1].paint(t,e)}else{new w([...this.nodes[0]],[...this.colors[0]]).paintCurve(t,e)}}}class b{constructor(t){this.readMesh(t),this.type=t.getAttribute("type")||"bilinear"}readMesh(t){let e=[[]],s=[[]],r=Number(t.getAttribute("x")),n=Number(t.getAttribute("y"));e[0][0]=new x(r,n);let o=t.children;for(let t=0,r=o.length;t<r;++t){e[3*t+1]=[],e[3*t+2]=[],e[3*t+3]=[],s[t+1]=[];let r=o[t].children;for(let n=0,o=r.length;n<o;++n){let o=r[n].children;for(let r=0,i=o.length;r<i;++r){let i=r;0!==t&&++i;let h,d=o[r].getAttribute("path"),c="l";null!=d&&(c=(h=d.match(/\s*([lLcC])\s*(.*)/))[1]);let u=l(h[2]);switch(c){case"l":0===i?(e[3*t][3*n+3]=u[0].add(e[3*t][3*n]),e[3*t][3*n+1]=a(e[3*t][3*n],e[3*t][3*n+3]),e[3*t][3*n+2]=a(e[3*t][3*n+3],e[3*t][3*n])):1===i?(e[3*t+3][3*n+3]=u[0].add(e[3*t][3*n+3]),e[3*t+1][3*n+3]=a(e[3*t][3*n+3],e[3*t+3][3*n+3]),e[3*t+2][3*n+3]=a(e[3*t+3][3*n+3],e[3*t][3*n+3])):2===i?(0===n&&(e[3*t+3][3*n+0]=u[0].add(e[3*t+3][3*n+3])),e[3*t+3][3*n+1]=a(e[3*t+3][3*n],e[3*t+3][3*n+3]),e[3*t+3][3*n+2]=a(e[3*t+3][3*n+3],e[3*t+3][3*n])):(e[3*t+1][3*n]=a(e[3*t][3*n],e[3*t+3][3*n]),e[3*t+2][3*n]=a(e[3*t+3][3*n],e[3*t][3*n]));break;case"L":0===i?(e[3*t][3*n+3]=u[0],e[3*t][3*n+1]=a(e[3*t][3*n],e[3*t][3*n+3]),e[3*t][3*n+2]=a(e[3*t][3*n+3],e[3*t][3*n])):1===i?(e[3*t+3][3*n+3]=u[0],e[3*t+1][3*n+3]=a(e[3*t][3*n+3],e[3*t+3][3*n+3]),e[3*t+2][3*n+3]=a(e[3*t+3][3*n+3],e[3*t][3*n+3])):2===i?(0===n&&(e[3*t+3][3*n+0]=u[0]),e[3*t+3][3*n+1]=a(e[3*t+3][3*n],e[3*t+3][3*n+3]),e[3*t+3][3*n+2]=a(e[3*t+3][3*n+3],e[3*t+3][3*n])):(e[3*t+1][3*n]=a(e[3*t][3*n],e[3*t+3][3*n]),e[3*t+2][3*n]=a(e[3*t+3][3*n],e[3*t][3*n]));break;case"c":0===i?(e[3*t][3*n+1]=u[0].add(e[3*t][3*n]),e[3*t][3*n+2]=u[1].add(e[3*t][3*n]),e[3*t][3*n+3]=u[2].add(e[3*t][3*n])):1===i?(e[3*t+1][3*n+3]=u[0].add(e[3*t][3*n+3]),e[3*t+2][3*n+3]=u[1].add(e[3*t][3*n+3]),e[3*t+3][3*n+3]=u[2].add(e[3*t][3*n+3])):2===i?(e[3*t+3][3*n+2]=u[0].add(e[3*t+3][3*n+3]),e[3*t+3][3*n+1]=u[1].add(e[3*t+3][3*n+3]),0===n&&(e[3*t+3][3*n+0]=u[2].add(e[3*t+3][3*n+3]))):(e[3*t+2][3*n]=u[0].add(e[3*t+3][3*n]),e[3*t+1][3*n]=u[1].add(e[3*t+3][3*n]));break;case"C":0===i?(e[3*t][3*n+1]=u[0],e[3*t][3*n+2]=u[1],e[3*t][3*n+3]=u[2]):1===i?(e[3*t+1][3*n+3]=u[0],e[3*t+2][3*n+3]=u[1],e[3*t+3][3*n+3]=u[2]):2===i?(e[3*t+3][3*n+2]=u[0],e[3*t+3][3*n+1]=u[1],0===n&&(e[3*t+3][3*n+0]=u[2])):(e[3*t+2][3*n]=u[0],e[3*t+1][3*n]=u[1]);break;default:console.error("mesh.js: "+c+" invalid path type.")}if(0===t&&0===n||r>0){let e=window.getComputedStyle(o[r]).stopColor.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i),a=window.getComputedStyle(o[r]).stopOpacity,h=255;a&&(h=Math.floor(255*a)),e&&(0===i?(s[t][n]=[],s[t][n][0]=Math.floor(e[1]),s[t][n][1]=Math.floor(e[2]),s[t][n][2]=Math.floor(e[3]),s[t][n][3]=h):1===i?(s[t][n+1]=[],s[t][n+1][0]=Math.floor(e[1]),s[t][n+1][1]=Math.floor(e[2]),s[t][n+1][2]=Math.floor(e[3]),s[t][n+1][3]=h):2===i?(s[t+1][n+1]=[],s[t+1][n+1][0]=Math.floor(e[1]),s[t+1][n+1][1]=Math.floor(e[2]),s[t+1][n+1][2]=Math.floor(e[3]),s[t+1][n+1][3]=h):3===i&&(s[t+1][n]=[],s[t+1][n][0]=Math.floor(e[1]),s[t+1][n][1]=Math.floor(e[2]),s[t+1][n][2]=Math.floor(e[3]),s[t+1][n][3]=h))}}e[3*t+1][3*n+1]=new x,e[3*t+1][3*n+2]=new x,e[3*t+2][3*n+1]=new x,e[3*t+2][3*n+2]=new x,e[3*t+1][3*n+1].x=(-4*e[3*t][3*n].x+6*(e[3*t][3*n+1].x+e[3*t+1][3*n].x)+-2*(e[3*t][3*n+3].x+e[3*t+3][3*n].x)+3*(e[3*t+3][3*n+1].x+e[3*t+1][3*n+3].x)+-1*e[3*t+3][3*n+3].x)/9,e[3*t+1][3*n+2].x=(-4*e[3*t][3*n+3].x+6*(e[3*t][3*n+2].x+e[3*t+1][3*n+3].x)+-2*(e[3*t][3*n].x+e[3*t+3][3*n+3].x)+3*(e[3*t+3][3*n+2].x+e[3*t+1][3*n].x)+-1*e[3*t+3][3*n].x)/9,e[3*t+2][3*n+1].x=(-4*e[3*t+3][3*n].x+6*(e[3*t+3][3*n+1].x+e[3*t+2][3*n].x)+-2*(e[3*t+3][3*n+3].x+e[3*t][3*n].x)+3*(e[3*t][3*n+1].x+e[3*t+2][3*n+3].x)+-1*e[3*t][3*n+3].x)/9,e[3*t+2][3*n+2].x=(-4*e[3*t+3][3*n+3].x+6*(e[3*t+3][3*n+2].x+e[3*t+2][3*n+3].x)+-2*(e[3*t+3][3*n].x+e[3*t][3*n+3].x)+3*(e[3*t][3*n+2].x+e[3*t+2][3*n].x)+-1*e[3*t][3*n].x)/9,e[3*t+1][3*n+1].y=(-4*e[3*t][3*n].y+6*(e[3*t][3*n+1].y+e[3*t+1][3*n].y)+-2*(e[3*t][3*n+3].y+e[3*t+3][3*n].y)+3*(e[3*t+3][3*n+1].y+e[3*t+1][3*n+3].y)+-1*e[3*t+3][3*n+3].y)/9,e[3*t+1][3*n+2].y=(-4*e[3*t][3*n+3].y+6*(e[3*t][3*n+2].y+e[3*t+1][3*n+3].y)+-2*(e[3*t][3*n].y+e[3*t+3][3*n+3].y)+3*(e[3*t+3][3*n+2].y+e[3*t+1][3*n].y)+-1*e[3*t+3][3*n].y)/9,e[3*t+2][3*n+1].y=(-4*e[3*t+3][3*n].y+6*(e[3*t+3][3*n+1].y+e[3*t+2][3*n].y)+-2*(e[3*t+3][3*n+3].y+e[3*t][3*n].y)+3*(e[3*t][3*n+1].y+e[3*t+2][3*n+3].y)+-1*e[3*t][3*n+3].y)/9,e[3*t+2][3*n+2].y=(-4*e[3*t+3][3*n+3].y+6*(e[3*t+3][3*n+2].y+e[3*t+2][3*n+3].y)+-2*(e[3*t+3][3*n].y+e[3*t][3*n+3].y)+3*(e[3*t][3*n+2].y+e[3*t+2][3*n].y)+-1*e[3*t][3*n].y)/9}}this.nodes=e,this.colors=s}paintMesh(t,e){let s=(this.nodes.length-1)/3,r=(this.nodes[0].length-1)/3;if("bilinear"===this.type||s<2||r<2){let n;for(let o=0;o<s;++o)for(let s=0;s<r;++s){let r=[];for(let t=3*o,e=3*o+4;t<e;++t)r.push(this.nodes[t].slice(3*s,3*s+4));let i=[];i.push(this.colors[o].slice(s,s+2)),i.push(this.colors[o+1].slice(s,s+2)),(n=new m(r,i)).paint(t,e)}}else{let n,o,a,h,l,d,u;const x=s,g=r;s++,r++;let w=new Array(s);for(let t=0;t<s;++t){w[t]=new Array(r);for(let e=0;e<r;++e)w[t][e]=[],w[t][e][0]=this.nodes[3*t][3*e],w[t][e][1]=this.colors[t][e]}for(let t=0;t<s;++t)for(let e=0;e<r;++e)0!==t&&t!==x&&(n=i(w[t-1][e][0],w[t][e][0]),o=i(w[t+1][e][0],w[t][e][0]),w[t][e][2]=c(w[t-1][e][1],w[t][e][1],w[t+1][e][1],n,o)),0!==e&&e!==g&&(n=i(w[t][e-1][0],w[t][e][0]),o=i(w[t][e+1][0],w[t][e][0]),w[t][e][3]=c(w[t][e-1][1],w[t][e][1],w[t][e+1][1],n,o));for(let t=0;t<r;++t){w[0][t][2]=[],w[x][t][2]=[];for(let e=0;e<4;++e)n=i(w[1][t][0],w[0][t][0]),o=i(w[x][t][0],w[x-1][t][0]),w[0][t][2][e]=n>0?2*(w[1][t][1][e]-w[0][t][1][e])/n-w[1][t][2][e]:0,w[x][t][2][e]=o>0?2*(w[x][t][1][e]-w[x-1][t][1][e])/o-w[x-1][t][2][e]:0}for(let t=0;t<s;++t){w[t][0][3]=[],w[t][g][3]=[];for(let e=0;e<4;++e)n=i(w[t][1][0],w[t][0][0]),o=i(w[t][g][0],w[t][g-1][0]),w[t][0][3][e]=n>0?2*(w[t][1][1][e]-w[t][0][1][e])/n-w[t][1][3][e]:0,w[t][g][3][e]=o>0?2*(w[t][g][1][e]-w[t][g-1][1][e])/o-w[t][g-1][3][e]:0}for(let s=0;s<x;++s)for(let r=0;r<g;++r){let n=i(w[s][r][0],w[s+1][r][0]),o=i(w[s][r+1][0],w[s+1][r+1][0]),c=i(w[s][r][0],w[s][r+1][0]),x=i(w[s+1][r][0],w[s+1][r+1][0]),g=[[],[],[],[]];for(let t=0;t<4;++t){(d=[])[0]=w[s][r][1][t],d[1]=w[s+1][r][1][t],d[2]=w[s][r+1][1][t],d[3]=w[s+1][r+1][1][t],d[4]=w[s][r][2][t]*n,d[5]=w[s+1][r][2][t]*n,d[6]=w[s][r+1][2][t]*o,d[7]=w[s+1][r+1][2][t]*o,d[8]=w[s][r][3][t]*c,d[9]=w[s+1][r][3][t]*x,d[10]=w[s][r+1][3][t]*c,d[11]=w[s+1][r+1][3][t]*x,d[12]=0,d[13]=0,d[14]=0,d[15]=0,u=f(d);for(let e=0;e<9;++e){g[t][e]=[];for(let s=0;s<9;++s)g[t][e][s]=p(u,e/8,s/8),g[t][e][s]>255?g[t][e][s]=255:g[t][e][s]<0&&(g[t][e][s]=0)}}h=[];for(let t=3*s,e=3*s+4;t<e;++t)h.push(this.nodes[t].slice(3*r,3*r+4));l=y(h);for(let s=0;s<8;++s)for(let r=0;r<8;++r)(a=new m(l[s][r],[[[g[0][s][r],g[1][s][r],g[2][s][r],g[3][s][r]],[g[0][s][r+1],g[1][s][r+1],g[2][s][r+1],g[3][s][r+1]]],[[g[0][s+1][r],g[1][s+1][r],g[2][s+1][r],g[3][s+1][r]],[g[0][s+1][r+1],g[1][s+1][r+1],g[2][s+1][r+1],g[3][s+1][r+1]]]])).paint(t,e)}}}transform(t){if(t instanceof x)for(let e=0,s=this.nodes.length;e<s;++e)for(let s=0,r=this.nodes[0].length;s<r;++s)this.nodes[e][s]=this.nodes[e][s].add(t);else if(t instanceof g)for(let e=0,s=this.nodes.length;e<s;++e)for(let s=0,r=this.nodes[0].length;s<r;++s)this.nodes[e][s]=this.nodes[e][s].transform(t)}scale(t){for(let e=0,s=this.nodes.length;e<s;++e)for(let s=0,r=this.nodes[0].length;s<r;++s)this.nodes[e][s]=this.nodes[e][s].scale(t)}}document.querySelectorAll("rect,circle,ellipse,path,text").forEach((r,n)=>{let o=r.getAttribute("id");o||(o="patchjs_shape"+n,r.setAttribute("id",o));const i=r.style.fill.match(/^url\(\s*"?\s*#([^\s"]+)"?\s*\)/),a=r.style.stroke.match(/^url\(\s*"?\s*#([^\s"]+)"?\s*\)/);if(i&&i[1]){const a=document.getElementById(i[1]);if(a&&"meshgradient"===a.nodeName){const i=r.getBBox();let l=document.createElementNS(s,"canvas");d(l,{width:i.width,height:i.height});const c=l.getContext("2d");let u=c.createImageData(i.width,i.height);const f=new b(a);"objectBoundingBox"===a.getAttribute("gradientUnits")&&f.scale(new x(i.width,i.height));const p=a.getAttribute("gradientTransform");null!=p&&f.transform(h(p)),"userSpaceOnUse"===a.getAttribute("gradientUnits")&&f.transform(new x(-i.x,-i.y)),f.paintMesh(u.data,l.width),c.putImageData(u,0,0);const y=document.createElementNS(t,"image");d(y,{width:i.width,height:i.height,x:i.x,y:i.y});let g=l.toDataURL();y.setAttributeNS(e,"xlink:href",g),r.parentNode.insertBefore(y,r),r.style.fill="none";const w=document.createElementNS(t,"use");w.setAttributeNS(e,"xlink:href","#"+o);const m="patchjs_clip"+n,M=document.createElementNS(t,"clipPath");M.setAttribute("id",m),M.appendChild(w),r.parentElement.insertBefore(M,r),y.setAttribute("clip-path","url(#"+m+")"),u=null,l=null,g=null}}if(a&&a[1]){const o=document.getElementById(a[1]);if(o&&"meshgradient"===o.nodeName){const i=parseFloat(r.style.strokeWidth.slice(0,-2))*(parseFloat(r.style.strokeMiterlimit)||parseFloat(r.getAttribute("stroke-miterlimit"))||1),a=r.getBBox(),l=Math.trunc(a.width+i),c=Math.trunc(a.height+i),u=Math.trunc(a.x-i/2),f=Math.trunc(a.y-i/2);let p=document.createElementNS(s,"canvas");d(p,{width:l,height:c});const y=p.getContext("2d");let g=y.createImageData(l,c);const w=new b(o);"objectBoundingBox"===o.getAttribute("gradientUnits")&&w.scale(new x(l,c));const m=o.getAttribute("gradientTransform");null!=m&&w.transform(h(m)),"userSpaceOnUse"===o.getAttribute("gradientUnits")&&w.transform(new x(-u,-f)),w.paintMesh(g.data,p.width),y.putImageData(g,0,0);const M=document.createElementNS(t,"image");d(M,{width:l,height:c,x:0,y:0});let S=p.toDataURL();M.setAttributeNS(e,"xlink:href",S);const k="pattern_clip"+n,A=document.createElementNS(t,"pattern");d(A,{id:k,patternUnits:"userSpaceOnUse",width:l,height:c,x:u,y:f}),A.appendChild(M),o.parentNode.appendChild(A),r.style.stroke="url(#"+k+")",g=null,p=null,S=null}}})}();</script>
</svg>
I've seen this post but it concerned Ionic 4, plus I've made the suggested solutions and it didn't work. I've exported the SVG in Inkscape as optimized SVG (but I tried other SVG format and it didn't work better). My issue is probably because of the SVG but what do I have to change to make it work?
Related
Vertical scroll not work in uiScrollView swift
Try to have scrollview inside stackview But when i try to scroll it, it's not working. Label is already more than enough to make it scrollable Is there any missing constarint ? Main view is in freeform already
Try adding height constraints to the scroll view as it appears that you only have a leading and trailing constraint. You could either try a fixed height size or anchor the top and bottom. Also, your content view should not be anchored to the scroll view. Instead make it have an equal width to the scroll view and then let the height be dictated by the height of the label.
You have some confusing constraints there... Here is what you want: and here's the source for that xib, so you can inspect it: <?xml version="1.0" encoding="UTF-8"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> <device id="retina4_0" orientation="portrait" appearance="light"/> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="System colors in document resources" minToolsVersion="11.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> </dependencies> <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> <view contentMode="scaleToFill" id="iN0-l3-epB"> <rect key="frame" x="0.0" y="0.0" width="320" height="568"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KN0-8I-kAw" userLabel="Danakini Round View"> <rect key="frame" x="20" y="109" width="280" height="350"/> <subviews> <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="MCE-fF-1F3"> <rect key="frame" x="20" y="20" width="240" height="310"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Lorem Ipsum" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pf4-se-Y1l"> <rect key="frame" x="0.0" y="0.0" width="240" height="19.5"/> <color key="backgroundColor" red="0.45138680930000002" green="0.99309605359999997" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <fontDescription key="fontDescription" type="boldSystem" pointSize="16"/> <nil key="textColor"/> <nil key="highlightedColor"/> </label> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gMy-4J-nYd" userLabel="HRline"> <rect key="frame" x="0.0" y="27.5" width="240" height="2"/> <color key="backgroundColor" systemColor="systemGray4Color"/> <constraints> <constraint firstAttribute="height" constant="2" id="6r4-ym-L9o"/> </constraints> </view> <scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Ohd-cQ-8q4"> <rect key="frame" x="0.0" y="37.5" width="240" height="234.5"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bgh-GP-EOo" userLabel="contentView"> <rect key="frame" x="0.0" y="0.0" width="240" height="412"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dK0-nd-d8A" userLabel="contentLabel"> <rect key="frame" x="0.0" y="0.0" width="240" height="412"/> <color key="backgroundColor" red="0.83216959239999999" green="0.98548370600000001" blue="0.47333085539999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <mutableString key="text">There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</mutableString> <fontDescription key="fontDescription" type="system" pointSize="15"/> <nil key="textColor"/> <nil key="highlightedColor"/> </label> </subviews> <color key="backgroundColor" systemColor="systemYellowColor"/> <constraints> <constraint firstItem="dK0-nd-d8A" firstAttribute="leading" secondItem="bgh-GP-EOo" secondAttribute="leading" id="VRW-2Y-78C"/> <constraint firstItem="dK0-nd-d8A" firstAttribute="top" secondItem="bgh-GP-EOo" secondAttribute="top" id="X7H-fn-51f"/> <constraint firstAttribute="trailing" secondItem="dK0-nd-d8A" secondAttribute="trailing" id="nLX-pf-k0n"/> <constraint firstAttribute="bottom" secondItem="dK0-nd-d8A" secondAttribute="bottom" id="qNF-7Y-zTJ"/> </constraints> </view> </subviews> <constraints> <constraint firstItem="bgh-GP-EOo" firstAttribute="bottom" secondItem="js6-NC-3lf" secondAttribute="bottom" id="GpI-in-K5y"/> <constraint firstItem="bgh-GP-EOo" firstAttribute="top" secondItem="js6-NC-3lf" secondAttribute="top" id="NnM-Sv-lEs"/> <constraint firstItem="bgh-GP-EOo" firstAttribute="width" secondItem="sm0-LU-kFC" secondAttribute="width" id="Ubq-5K-iJW"/> <constraint firstItem="bgh-GP-EOo" firstAttribute="leading" secondItem="js6-NC-3lf" secondAttribute="leading" id="ijJ-VO-Qpg"/> <constraint firstItem="bgh-GP-EOo" firstAttribute="trailing" secondItem="js6-NC-3lf" secondAttribute="trailing" id="qln-zf-sri"/> </constraints> <viewLayoutGuide key="contentLayoutGuide" id="js6-NC-3lf"/> <viewLayoutGuide key="frameLayoutGuide" id="sm0-LU-kFC"/> </scrollView> <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="TdZ-YS-MhG"> <rect key="frame" x="0.0" y="280" width="240" height="30"/> <color key="backgroundColor" red="0.0" green="0.68455910679999998" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/> <state key="normal" title="Oke"> <color key="titleColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> </state> </button> </subviews> </stackView> </subviews> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <constraints> <constraint firstAttribute="bottom" secondItem="MCE-fF-1F3" secondAttribute="bottom" constant="20" id="0TY-J1-O6O"/> <constraint firstItem="MCE-fF-1F3" firstAttribute="top" secondItem="KN0-8I-kAw" secondAttribute="top" constant="20" id="3sN-Gw-elq"/> <constraint firstItem="MCE-fF-1F3" firstAttribute="leading" secondItem="KN0-8I-kAw" secondAttribute="leading" constant="20" id="5yr-mw-wRa"/> <constraint firstAttribute="trailing" secondItem="MCE-fF-1F3" secondAttribute="trailing" constant="20" id="TQ3-xf-j3R"/> <constraint firstAttribute="height" constant="350" id="hgx-Uc-HlF"/> <constraint firstAttribute="width" constant="280" id="mF4-ca-APk"/> </constraints> </view> </subviews> <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/> <color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <constraints> <constraint firstItem="KN0-8I-kAw" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="BJu-bh-5Rp"/> <constraint firstItem="KN0-8I-kAw" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="ZN8-S1-ftW"/> </constraints> <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> <point key="canvasLocation" x="139" y="153"/> </view> </objects> <resources> <systemColor name="systemGray4Color"> <color red="0.81960784313725488" green="0.81960784313725488" blue="0.83921568627450982" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> </systemColor> <systemColor name="systemYellowColor"> <color red="1" green="0.80000000000000004" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> </systemColor> </resources> </document>
flutter cannot load and render svg images
I am trying to load and show an image in svg format but I get this error everytime unhandled element pattern; Picture key: AssetBundlePictureKey(bundle: PlatformAssetBundle#5abbc(), name: "assets/svg/Ellipse.svg", colorFilter: null) ══╡ EXCEPTION CAUGHT BY SVG ╞═══════════════════════════════════════════════════════════════════════ The following assertion was thrown while parsing AssetBundlePictureKey(bundle: PlatformAssetBundle#5abbc(), name: "assets/svg/Ellipse.svg", colorFilter: null) in _getDefinitionPaint: Failed to find definition for url(#pattern0) This library only supports <defs> and xlink:href references that are defined ahead of their references. This error can be caused when the desired definition is defined after the element referring to it (e.g. at the end of the file), or defined in another file. This error is treated as non-fatal, but your SVG file will likely not render as intended ════════════════════════════════════════════════════════════════════════════════════════════════════ This is how I am trying to display it Padding( padding: const EdgeInsets.only(top: 24), child: SvgPicture.asset( 'assets/svg/Ellipse.svg', width: 100, height: 100, ), ), How can I fix the error
Tested on flutter_svg: ^1.1.5 To fix this problem we need to move up tags defs and /defs in svg icons. For example, this icon throw exception <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" clip-rule="evenodd" d="M19.6484 3.68253H10.7791C8.03372 3.68253 5.66705 5.90787 5.66705 8.65453V22.9705C5.66705 25.8719 7.87772 28.1532 10.7791 28.1532H21.4297C24.1764 28.1532 26.4031 25.7172 26.4031 22.9705V10.7172L19.6484 3.68253Z" stroke="url(#paint0_linear_3_133)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> <path d="M19.2981 3.66693V7.5456C19.2981 9.43893 20.8301 10.9749 22.7235 10.9789C24.4781 10.9829 26.2741 10.9843 26.3955 10.9763" stroke="url(#paint1_linear_3_133)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> <path d="M15.5208 12.5875V21.3515" stroke="url(#paint2_linear_3_133)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> <path d="M11.7363 16.3883L15.5203 12.5869L19.3056 16.3883" stroke="url(#paint3_linear_3_133)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> <defs> <linearGradient id="paint0_linear_3_133" x1="6.35751" y1="3.68257" x2="23.5898" y2="3.74374" gradientUnits="userSpaceOnUse"> <stop stop-color="#4D45A9" /> <stop offset="1" stop-color="#766AFF" /> </linearGradient> <linearGradient id="paint1_linear_3_133" x1="19.5344" y1="3.66694" x2="25.4325" y2="3.69092" gradientUnits="userSpaceOnUse"> <stop stop-color="#4D45A9" /> <stop offset="1" stop-color="#766AFF" /> </linearGradient> <linearGradient id="paint2_linear_3_133" x1="14.8985" y1="12.5875" x2="16.0066" y2="12.5882" gradientUnits="userSpaceOnUse"> <stop stop-color="#4D45A9" /> <stop offset="1" stop-color="#766AFF" /> </linearGradient> <linearGradient id="paint3_linear_3_133" x1="11.9883" y1="12.5869" x2="18.2783" y2="12.6394" gradientUnits="userSpaceOnUse"> <stop stop-color="#4D45A9" /> <stop offset="1" stop-color="#766AFF" /> </linearGradient> </defs> </svg> and if we move up tags defs and /defs so it works <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"> <defs> <linearGradient id="paint0_linear_3_133" x1="6.35751" y1="3.68257" x2="23.5898" y2="3.74374" gradientUnits="userSpaceOnUse"> <stop stop-color="#4D45A9" /> <stop offset="1" stop-color="#766AFF" /> </linearGradient> <linearGradient id="paint1_linear_3_133" x1="19.5344" y1="3.66694" x2="25.4325" y2="3.69092" gradientUnits="userSpaceOnUse"> <stop stop-color="#4D45A9" /> <stop offset="1" stop-color="#766AFF" /> </linearGradient> <linearGradient id="paint2_linear_3_133" x1="14.8985" y1="12.5875" x2="16.0066" y2="12.5882" gradientUnits="userSpaceOnUse"> <stop stop-color="#4D45A9" /> <stop offset="1" stop-color="#766AFF" /> </linearGradient> <linearGradient id="paint3_linear_3_133" x1="11.9883" y1="12.5869" x2="18.2783" y2="12.6394" gradientUnits="userSpaceOnUse"> <stop stop-color="#4D45A9" /> <stop offset="1" stop-color="#766AFF" /> </linearGradient> </defs> <path fill-rule="evenodd" clip-rule="evenodd" d="M19.6484 3.68253H10.7791C8.03372 3.68253 5.66705 5.90787 5.66705 8.65453V22.9705C5.66705 25.8719 7.87772 28.1532 10.7791 28.1532H21.4297C24.1764 28.1532 26.4031 25.7172 26.4031 22.9705V10.7172L19.6484 3.68253Z" stroke="url(#paint0_linear_3_133)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> <path d="M19.2981 3.66693V7.5456C19.2981 9.43893 20.8301 10.9749 22.7235 10.9789C24.4781 10.9829 26.2741 10.9843 26.3955 10.9763" stroke="url(#paint1_linear_3_133)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> <path d="M15.5208 12.5875V21.3515" stroke="url(#paint2_linear_3_133)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> <path d="M11.7363 16.3883L15.5203 12.5869L19.3056 16.3883" stroke="url(#paint3_linear_3_133)" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" /> </svg> Original helping post: https://stackoverflow.com/a/62773031/11725354
Flutter natively doesn’t support rendering SVG. But there are some workaround for that. Solution 1: There is a package called flutter_svg which provide a solid way of adding SVG to your flutter project. Solution 2: Convert your SVG files to PNG using a free online convertor (Example: https://svgtopng.com/).
Try using flutter_svg library. This will render SVG in your flutter app. Link: https://pub.dev/packages/flutter_svg Basic Usage: final String assetName = 'assets/image.svg'; final Widget svg = SvgPicture.asset( assetName, semanticsLabel: 'Acme Logo' );
You can use base64 string of the SVG file if that is not loading.
Need constraints for y position or height when height is unambiguous with stack views in stack views
I created a "TitleDetails" view below and I'd like to stack that titleDetails view into another reusable view. There are no errors thrown for the TitleDetails constraints. I'd just like to stack 2 TitleDetails views into a new view. However, when I do the constraints it appears I need the Y position for height, however the height of titleDetails should be determined by its contents and the space between the two is constrained as well. So I'm not seeing where the ambiguity is coming from. <?xml version="1.0" encoding="UTF-8"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="18122" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES"> <device id="retina6_1" orientation="portrait" appearance="light"/> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="18093"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="System colors in document resources" minToolsVersion="11.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> </dependencies> <objects> <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="TitleDetails" customModule="WholeVC" customModuleProvider="target"> <connections> <outlet property="detailsLabel" destination="pjO-IR-TuP" id="EkZ-wc-LOm"/> <outlet property="stackBottom" destination="W1y-Me-M1S" id="ykw-d7-bz9"/> <outlet property="stackLeading" destination="6n3-Qg-845" id="ghK-h8-OBL"/> <outlet property="stackTop" destination="Ey8-Pq-GRr" id="WOw-Q0-zc2"/> <outlet property="stackTrailing" destination="m9b-I7-Nwj" id="ly8-lY-3zf"/> <outlet property="stackView" destination="pIM-2q-cOU" id="LvK-Yk-LHf"/> <outlet property="titleLabel" destination="G5U-AG-1Se" id="4KM-9f-LQA"/> </connections> </placeholder> <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> <view contentMode="scaleToFill" id="iN0-l3-epB"> <rect key="frame" x="0.0" y="0.0" width="208" height="72"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <stackView opaque="NO" contentMode="scaleToFill" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="pIM-2q-cOU"> <rect key="frame" x="0.0" y="0.0" width="208" height="72"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="1000" verticalHuggingPriority="1000" text="Title" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="G5U-AG-1Se"> <rect key="frame" x="0.0" y="0.0" width="36.5" height="72"/> <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/> <nil key="textColor"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Details Details Details" textAlignment="natural" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pjO-IR-TuP"> <rect key="frame" x="41.5" y="0.0" width="166.5" height="72"/> <fontDescription key="fontDescription" type="system" pointSize="17"/> <nil key="textColor"/> <nil key="highlightedColor"/> </label> </subviews> <constraints> <constraint firstItem="pjO-IR-TuP" firstAttribute="width" relation="greaterThanOrEqual" secondItem="G5U-AG-1Se" secondAttribute="width" id="EGR-ZT-2ID"/> </constraints> </stackView> </subviews> <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> <constraint firstItem="pIM-2q-cOU" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="6n3-Qg-845"/> <constraint firstItem="pIM-2q-cOU" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="Ey8-Pq-GRr"/> <constraint firstAttribute="bottom" secondItem="pIM-2q-cOU" secondAttribute="bottom" id="W1y-Me-M1S"/> <constraint firstAttribute="trailing" secondItem="pIM-2q-cOU" secondAttribute="trailing" id="m9b-I7-Nwj"/> </constraints> <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> <point key="canvasLocation" x="94.20289855072464" y="-113.16964285714285"/> </view> <view contentMode="scaleToFill" id="Xof-7G-Flv"> <rect key="frame" x="0.0" y="0.0" width="355" height="279"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <subviews> <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="awM-nF-Vev" customClass="TitleDetails" customModule="WholeVC" customModuleProvider="target"> <rect key="frame" x="0.0" y="0.0" width="355" height="103"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> </view> <view contentMode="scaleToFill" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="mcx-Fg-GMg" customClass="TitleDetails" customModule="WholeVC" customModuleProvider="target"> <rect key="frame" x="0.0" y="172" width="355" height="107"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> </view> </subviews> <viewLayoutGuide key="safeArea" id="art-6S-teo"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> <constraint firstItem="awM-nF-Vev" firstAttribute="leading" secondItem="Xof-7G-Flv" secondAttribute="leading" id="3Sp-vC-vfu"/> <constraint firstItem="awM-nF-Vev" firstAttribute="trailing" secondItem="Xof-7G-Flv" secondAttribute="trailing" id="L4H-5I-T0j"/> <constraint firstItem="awM-nF-Vev" firstAttribute="top" secondItem="Xof-7G-Flv" secondAttribute="top" id="Xcm-9t-hJx"/> <constraint firstItem="mcx-Fg-GMg" firstAttribute="top" secondItem="awM-nF-Vev" secondAttribute="bottom" constant="69" id="Yh4-pM-WP6"/> <constraint firstItem="mcx-Fg-GMg" firstAttribute="trailing" secondItem="Xof-7G-Flv" secondAttribute="trailing" id="dUB-H0-Zm1"/> <constraint firstItem="mcx-Fg-GMg" firstAttribute="bottom" secondItem="Xof-7G-Flv" secondAttribute="bottom" id="feT-Rh-Vs7"/> <constraint firstItem="mcx-Fg-GMg" firstAttribute="leading" secondItem="Xof-7G-Flv" secondAttribute="leading" id="pD5-5k-VJf"/> </constraints> <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/> <point key="canvasLocation" x="94.927536231884062" y="67.96875"/> </view> </objects> <resources> <systemColor name="systemBackgroundColor"> <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> </systemColor> </resources> </document>
What you've shown would be very easy to implement via code, rather than XIB files. However, the reason you're getting the ambiguity is because interface builder cannot determine the intrinsic height as you have designed it. IF your current implementation gives you the desired layout at run-time, you can get rid of the "ambiguous" errors / warnings by giving your top TitleDetails view a "Placeholder" intrinsic height. Select the view, and then in the Size Inspector pane:
Stack View breaks when switching to vertical axis
As a continuation of this problem. When I actually apply the constraints in a ViewController, I am finding that actually switching the axis to Vertical totally breaks the constraints. Here is the before. It's looking proper. Now here is after switching to vertical. Totally baffled as to why this happens... It says I need another width constraint, however the Stack View already has 2 width constraints: Why is this happening and how can I fix this? Here is my code: <?xml version="1.0" encoding="UTF-8"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="18122" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r"> <device id="retina6_1" orientation="portrait" appearance="light"/> <dependencies> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="18093"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="System colors in document resources" minToolsVersion="11.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> </dependencies> <scenes> <!--View Controller--> <scene sceneID="tne-QT-ifu"> <objects> <viewController id="BYZ-38-t0r" customClass="ViewController" customModule="Test2Part" customModuleProvider="target" sceneMemberID="viewController"> <view key="view" contentMode="scaleToFill" ambiguous="YES" id="8bC-Xf-vdC"> <rect key="frame" x="0.0" y="0.0" width="414" height="896"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <stackView opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="7" translatesAutoresizingMaskIntoConstraints="NO" id="VP4-UJ-ETA"> <rect key="frame" x="0.0" y="424" width="0.0" height="48"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="1000" verticalHuggingPriority="1000" text="asdlfkjlkjalskdjflakjsdlkfjalkjsdflkjasldkfjalkjsdflkj" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xej-eS-5Sd"> <rect key="frame" x="0.0" y="0.0" width="0.0" height="20.5"/> <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/> <nil key="textColor"/> <nil key="highlightedColor"/> </label> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xj4-8Q-inE"> <rect key="frame" x="0.0" y="27.5" width="0.0" height="20.5"/> <string key="text">asldkfjalkjsdflkjasldkjfalkjsdflkjasldkjflakjsdlfkjalskdjflaqkjsdlfkjalksdjflaksdlfkjalskdjflakjsdlfkjalsdkjflakjsdflkjasldkjflakjsdflkjasdf</string> <fontDescription key="fontDescription" type="system" pointSize="17"/> <nil key="textColor"/> <nil key="highlightedColor"/> </label> </subviews> <constraints> <constraint firstItem="Xj4-8Q-inE" firstAttribute="width" relation="greaterThanOrEqual" secondItem="Xej-eS-5Sd" secondAttribute="width" multiplier="1.2" id="xrh-Tq-uYT"/> </constraints> </stackView> </subviews> <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> <color key="backgroundColor" systemColor="systemBackgroundColor"/> <constraints> <constraint firstItem="VP4-UJ-ETA" firstAttribute="centerY" secondItem="8bC-Xf-vdC" secondAttribute="centerY" id="ML4-KP-VmW"/> <constraint firstItem="VP4-UJ-ETA" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="ZUI-PV-Ofm"/> <constraint firstItem="VP4-UJ-ETA" firstAttribute="width" secondItem="8bC-Xf-vdC" secondAttribute="width" id="aA4-hD-Jye"/> </constraints> </view> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/> </objects> <point key="canvasLocation" x="26" y="89"/> </scene> </scenes> <resources> <systemColor name="systemBackgroundColor"> <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> </systemColor> </resources> </document>
UITableView scroll outside of frame
I have a UITableView with a fixed width. The table is centered in its container so that there are white margins both on the left and the right. Is it possible to scroll the table also with the finger on the white space? Thanks in advance! EDIT: after matt suggestion i've tried with a pan gesture recognizer unfortunately it's not working so smooth, there is no bounce at all #IBAction func handlePan(recognizer:UIPanGestureRecognizer) { let translation = recognizer.translation(in: self.view) self.tableView.setContentOffset(CGPoint(x: 0, y: self.tableView.contentOffset.y - translation.y), animated: true) }
You can put tableview in a scrollview and set Clip to Bounds to false. Shared storyboard sample below. <?xml version="1.0" encoding="UTF-8"?> <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14109" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r"> <device id="retina5_5" orientation="portrait"> <adaptation id="fullscreen"/> </device> <dependencies> <deployment identifier="iOS"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/> <capability name="Constraints to layout margins" minToolsVersion="6.0"/> <capability name="Safe area layout guides" minToolsVersion="9.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> </dependencies> <scenes> <!--View Controller--> <scene sceneID="tne-QT-ifu"> <objects> <viewController id="BYZ-38-t0r" customClass="ViewController" customModule="OptionalTest" customModuleProvider="target" sceneMemberID="viewController"> <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC"> <rect key="frame" x="0.0" y="0.0" width="414" height="736"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zrT-93-180"> <rect key="frame" x="65" y="149" width="221" height="134"/> <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <fontDescription key="fontDescription" type="system" pointSize="17"/> <nil key="textColor"/> <nil key="highlightedColor"/> </label> <scrollView multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TPs-fa-Cha"> <rect key="frame" x="20" y="20" width="374" height="429"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LQo-x0-VDn"> <rect key="frame" x="0.0" y="0.0" width="414" height="429"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8PI-hl-lry"> <rect key="frame" x="-20" y="0.0" width="414" height="429"/> <subviews> <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="2v6-FK-vyt"> <rect key="frame" x="30" y="20" width="354" height="389"/> <color key="backgroundColor" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <prototypes> <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" id="gZa-kH-87J"> <rect key="frame" x="0.0" y="28" width="354" height="44"/> <autoresizingMask key="autoresizingMask"/> <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="gZa-kH-87J" id="Oid-Rc-aH5"> <rect key="frame" x="0.0" y="0.0" width="354" height="43.666666666666664"/> <autoresizingMask key="autoresizingMask"/> <subviews> <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Test" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dJP-b6-Ftm"> <rect key="frame" x="20" y="11" width="500" height="22"/> <constraints> <constraint firstAttribute="height" priority="750" constant="50" id="vcL-NN-bXq"/> </constraints> <fontDescription key="fontDescription" type="system" pointSize="17"/> <nil key="textColor"/> <nil key="highlightedColor"/> </label> </subviews> <constraints> <constraint firstAttribute="bottomMargin" secondItem="dJP-b6-Ftm" secondAttribute="bottom" id="DgB-3a-RR8"/> <constraint firstItem="dJP-b6-Ftm" firstAttribute="leading" secondItem="Oid-Rc-aH5" secondAttribute="leadingMargin" id="Hli-JL-2Qr"/> <constraint firstAttribute="trailingMargin" secondItem="dJP-b6-Ftm" secondAttribute="trailing" id="kia-ek-skG"/> <constraint firstItem="dJP-b6-Ftm" firstAttribute="top" secondItem="Oid-Rc-aH5" secondAttribute="topMargin" id="l5N-zS-cxF"/> </constraints> </tableViewCellContentView> </tableViewCell> </prototypes> </tableView> </subviews> <color key="backgroundColor" red="0.75004076959999999" green="0.1040449888" blue="0.1206566915" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstAttribute="bottom" secondItem="2v6-FK-vyt" secondAttribute="bottom" constant="20" id="Edy-hU-GY1"/> <constraint firstAttribute="width" constant="414" id="Isx-E5-2uJ"/> <constraint firstAttribute="trailing" secondItem="2v6-FK-vyt" secondAttribute="trailing" constant="30" id="OTY-td-pfO"/> <constraint firstItem="2v6-FK-vyt" firstAttribute="leading" secondItem="8PI-hl-lry" secondAttribute="leading" constant="30" id="T7h-dc-4QT"/> <constraint firstItem="2v6-FK-vyt" firstAttribute="top" secondItem="8PI-hl-lry" secondAttribute="top" constant="20" id="dcV-5c-pkc"/> </constraints> </view> </subviews> <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> <constraints> <constraint firstAttribute="trailing" secondItem="8PI-hl-lry" secondAttribute="trailing" constant="20" id="018-wR-9xA"/> <constraint firstItem="8PI-hl-lry" firstAttribute="leading" secondItem="LQo-x0-VDn" secondAttribute="leading" constant="-20" id="FKC-nR-YRp"/> <constraint firstItem="8PI-hl-lry" firstAttribute="top" secondItem="LQo-x0-VDn" secondAttribute="top" id="Gqv-OU-P2f"/> <constraint firstAttribute="bottom" secondItem="8PI-hl-lry" secondAttribute="bottom" id="KK5-wW-ozL"/> </constraints> </view> </subviews> <constraints> <constraint firstAttribute="trailing" secondItem="LQo-x0-VDn" secondAttribute="trailing" id="AE2-7E-9HG"/> <constraint firstItem="LQo-x0-VDn" firstAttribute="width" secondItem="TPs-fa-Cha" secondAttribute="width" priority="250" id="Rte-o0-Glp"/> <constraint firstItem="LQo-x0-VDn" firstAttribute="top" secondItem="TPs-fa-Cha" secondAttribute="top" id="aEU-v5-Cad"/> <constraint firstAttribute="bottom" secondItem="LQo-x0-VDn" secondAttribute="bottom" id="cO7-2E-0pT"/> <constraint firstItem="LQo-x0-VDn" firstAttribute="leading" secondItem="TPs-fa-Cha" secondAttribute="leading" id="m81-U4-SNF"/> <constraint firstItem="LQo-x0-VDn" firstAttribute="height" secondItem="TPs-fa-Cha" secondAttribute="height" id="owm-Yu-tsT"/> </constraints> </scrollView> <stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="EJ1-7L-gD8"> <rect key="frame" x="0.0" y="481" width="414" height="255"/> <subviews> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9zS-iV-m0P"> <rect key="frame" x="0.0" y="0.0" width="414" height="127.66666666666667"/> <color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/> </view> <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lpS-nX-jsH"> <rect key="frame" x="0.0" y="127.66666666666663" width="414" height="127.33333333333331"/> <color key="backgroundColor" cocoaTouchSystemColor="viewFlipsideBackgroundColor"/> </view> </subviews> <constraints> <constraint firstAttribute="height" constant="255" id="oGk-Vz-GWg"/> </constraints> </stackView> </subviews> <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/> <constraints> <constraint firstItem="EJ1-7L-gD8" firstAttribute="bottom" secondItem="6Tk-OE-BBY" secondAttribute="bottom" id="EgJ-Wh-ZOP"/> <constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="EJ1-7L-gD8" secondAttribute="trailing" id="Srj-nB-74S"/> <constraint firstItem="TPs-fa-Cha" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" id="frI-np-m0B"/> <constraint firstItem="EJ1-7L-gD8" firstAttribute="top" secondItem="TPs-fa-Cha" secondAttribute="bottom" constant="32" id="jfk-9F-7WW"/> <constraint firstItem="TPs-fa-Cha" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="20" id="pR9-do-d64"/> <constraint firstItem="TPs-fa-Cha" firstAttribute="trailing" secondItem="6Tk-OE-BBY" secondAttribute="trailing" constant="-20" id="r3d-o9-LYw"/> <constraint firstItem="EJ1-7L-gD8" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" id="vmi-E0-e52"/> </constraints> <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/> </view> <connections> <outlet property="label" destination="zrT-93-180" id="9YE-hX-UB7"/> </connections> </viewController> <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/> </objects> <point key="canvasLocation" x="139.13043478260872" y="132.06521739130434"/> </scene> </scenes> </document>