VideoSpike / nativescript-web-image-cache

An image caching library for both Android and iOS that wraps Facebook Fresco and SDWebImageCache
MIT License
43 stars 22 forks source link

Nativescript 4 support #50

Open Tyg-g opened 6 years ago

Tyg-g commented 6 years ago

I'm trying to use this plugin. I get an error right at installation.

npm i nativescript-web-image-cache
/path/to/project
├── nativescript-web-image-cache@4.2.6 
└── UNMET PEER DEPENDENCY tns-core-modules@4.1.0

npm WARN nativescript-web-image-cache@4.2.6 requires a peer of tns-core-modules@^3.0.0 || ^3.0.0-rc.1 but none was installed.
abhayastudios commented 6 years ago

I had the same it will still work... If you want to get rid of the error message you can replace this in node_modules/nativescript-web-image-cache/package.json:

"peerDependencies": {
    "tns-core-modules": ">=3.0.0 || >=3.0.0-rc.1"
  },

I guess it would be best if this would be replaced in the repo indeed.

Tyg-g commented 6 years ago

I'm testing it but the image does not show. No error messages, any logs. I'm clueless.

abhayastudios commented 6 years ago

I had to make sure that the parent element had the width/height set before it showed. Hope that helps. Otherwise post some code to people can have a look at it... I am using NS 4.1 which is working fine for me.

Tyg-g commented 6 years ago

Thank you, I just found this out. If I set the heigth parameter, it is ok. Width is calculated. However it does not calculate the heigth from given or implicit width. For my project without automatic heigth it is quite unusable, I need functionality like the N's <Image> widget. Is it possible to achieve it somehow?

abhayastudios commented 6 years ago

Why not just set the parent's height to 100% and then WebImage will set its own size like Image would do.

Tyg-g commented 6 years ago

It is in a <ScrollView>, so setting the height is not possible.

I want to test the plugin more, but now I'm getting really strange errors, I cannot make it run.

Tyg-g commented 6 years ago

Ok it works now. It shows the image with 1px height. I really need automatic height in this case.

abhayastudios commented 6 years ago

Just now I ran into something similar and saw that it is because if you don't set a height this plugin will just get the screen height (instead of calculating the available height of the parent element). I solved it doing something like below, but I guess it would be better if this plugin would take care of it.

<StackLayout #parent (loaded)="onLoaded()">
  <WebImage #photo [height]="photoHeight" [src]="photoUrl" stretch="aspectFit">
  </WebImage>
</StackLayout>
import { screen } from 'platform';
import { layout } from 'utils/utils';

@ViewChild('parent') parent: ElementRef;
@ViewChild('photo') photo: ElementRef;

public photoObj:any;
public photoHeight:number=0;

public onLoaded() {
  setTimeout(() => {
    this.photoHeight = layout.toDeviceIndependentPixels(this.parent.nativeElement.getMeasuredHeight());
  },1);
}